我有一个带有这样的 where 子句的查询:
WHERE (scalar-subquery1) > (scalar-subquery2)
而且效果很好。此处可以有任何运算符,而不是查询之间的“大于”(“>”)。
现在我想为这些查询命名,以便我可以在 select 子句中引用它们,所以我尝试了:
SELECT q1,q2 ... WHERE (scalar-subquery1) as q1 > (scalar-subquery2) as q2
但是 as q1
和 >
运算符之间报告了语法错误。有什么办法可以解决这个问题?
最佳答案
您可以将此作为子查询执行:
select q1, q2
from (select (scalar-subquery1) as q1, (scalar-subquery2) as q2
) t
where q1 < q2
或者作为交叉连接:
select q1.val, q2.val
from(scalar-subquery1) as q1 cross join
(scalar-subquery2) q2
where q1.val < q2.val
第三个选项是第一个的变体:
select t.*
from (select <current select>
(scalar-subquery1) as q1, (scalar-subquery2) as q2
from <current from>
) t
where q1 < q2
关于MySQL:在 where 子句中命名标量值子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11689402/