我正在查詢並需要一些幫助。Mysql比較兩個變量的查詢
這裏是查詢的一部分:
AND count_sub>2 AND count_del<=2
我想要做的是,採取在此查詢的2個變量和IF count_sub
大於5+count_del
繼續。
例子:
count_sub = 10
count_del = 4
不同的是6以便於將返回的結果,但如果:
count_sub = 4
count_del = 1
不同的是3,並且不會返回任何
感謝
我正在查詢並需要一些幫助。Mysql比較兩個變量的查詢
這裏是查詢的一部分:
AND count_sub>2 AND count_del<=2
我想要做的是,採取在此查詢的2個變量和IF count_sub
大於5+count_del
繼續。
例子:
count_sub = 10
count_del = 4
不同的是6以便於將返回的結果,但如果:
count_sub = 4
count_del = 1
不同的是3,並且不會返回任何
感謝
您可以查詢差異:
WHERE count_sub - count_del > 5
我會建議以下解決方案:
SELECT a.id
FROM tbl1 a
INNER JOIN (SELECT id, count_sub - count_del AS diff FROM tbl1) b ON b.id = a.id
WHERE b.diff > 5
由WHERE
條款(WHERE count_sub - count_del > 5
)在使用算術,可以防止優化器使用的列的索引。一般規則是儘可能遠離WHERE
條款移動算術。將算術移至派生表至派生列更有效。
你也可以做'WHERE(case count_sub> count_del + 5 then 1 else 0)= 1'的情況,儘管對於一個簡單的大於計算來說它是矯枉過正的。 – Valdogg21
-1您應該避免在'WHERE'子句列中使用算術運算符。它阻止了索引的使用。 – Kermit
@njk我認爲-1有點苛刻,但這是你的選擇。你能指出一個替代方案嗎? – Tchoupi