我有一个这样的查询:
WHERE (scalar-subquery1) > (scalar-subquery2)
它工作正常。这里可以有任何运算符,而不是查询之间的“大于”(>“)。
现在我想为这些查询命名,以便我可以在 select 子句中引用它们,所以我尝试了:
SELECT q1,q2 ... WHERE (scalar-subquery1) as q1 > (scalar-subquery2) as q2
as q1但是and运算符之间会报语法错误>。有什么办法可以解决这个问题?
您可以将其作为子查询执行:
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
听起来像你想要的:
SELECT (scalar-subquery1) as q1, (scalar-subquery2) as q2 ... WHERE (scalar-subquery1) > (scalar-subquery2)
我认为 MySql 不允许您从 SELECT 引用 where 子句中的项目