SELECT
table1.a,
table1.b,
(SELECT b
FROM table2
WHERE table2.b - table1.a < 10
LIMIT 0,1) as test
FROM table1
WHERE table1.b < test;
我正在尝试在查询的 WHERE 部分中使用 SELECT“变量”测试 中收到的结果。
知道如何做到这一点,而不必再次在 WHERE 中重新进行计算或进行任何操作吗?到目前为止,这就是我设法让它发挥作用的方法。
最佳答案
你不能在 WHERE 中使用它,但你可以在 HAVING 中使用它。在那里你就有了你的结果。但这不是很高效。
SELECT table1.a, table1.b,
(select b FROM table2 WHERE table2.b-table1.a<10 LIMIT 0,1) as test
FROM table1
HAVING table1.b<test
如果你想使用 WHERE,那么你也必须在这个位置创建你的 SUBSELECT
SELECT table1.a, table1.b,
(select b FROM table2 WHERE table2.b-table1.a<10 LIMIT 0,1) as test
FROM table1
WHERE table1.b < (select b FROM table2 WHERE table2.b-table1.a<10 LIMIT 0,1)
关于mySQL 在 WHERE 子句中重用计算值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45352216/