1

我有一个这样的查询:

WHERE (scalar-subquery1) > (scalar-subquery2)

它工作正常。这里可以有任何运算符,而不是查询之间的“大于”(>“)。

现在我想为这些查询命名,以便我可以在 select 子句中引用它们,所以我尝试了:

SELECT q1,q2 ... WHERE (scalar-subquery1) as q1 > (scalar-subquery2) as q2

as q1但是and运算符之间会报语法错误>。有什么办法可以解决这个问题?

4

2 回答 2

2

您可以将其作为子查询执行:

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
于 2012-07-27T14:12:07.877 回答
1

听起来像你想要的:

SELECT (scalar-subquery1) as q1, (scalar-subquery2) as q2 ... WHERE (scalar-subquery1) > (scalar-subquery2)

我认为 MySql 不允许您从 SELECT 引用 where 子句中的项目

于 2012-07-27T14:05:30.763 回答