我有一个关于where cluse的查询:
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 - MySQL:在where子句中命名标量值子查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11689402/

10-12 05:36