我正在查询并需要一些帮助。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