2012-09-10 141 views
0

我正在查詢並需要一些幫助。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,並且不會返回任何

感謝

回答

0

您可以查詢差異:

WHERE count_sub - count_del > 5 
+0

你也可以做'WHERE(case count_sub> count_del + 5 then 1 else 0)= 1'的情況,儘管對於一個簡單的大於計算來說它是矯枉過正的。 – Valdogg21

+0

-1您應該避免在'WHERE'子句列中使用算術運算符。它阻止了索引的使用。 – Kermit

+0

@njk我認爲-1有點苛刻,但這是你的選擇。你能指出一個替代方案嗎? – Tchoupi

0

我會建議以下解決方案:

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條款移動算術。將算術移至派生表至派生列更有效。