2012-09-10 140 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条款移动算术。将算术移至派生表至派生列更有效。