MySQL:在 where 子句中命名标量值子查询

标签 mysql sql subquery

我有一个带有这样的 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/

相关文章:

mysql全文从一个表单输入多个单词?

php - 没有全文支持;必须有有效的 mysql 数据库搜索引擎;哪里可以找到?

java - 在 QueryDSL 中使用带有 "in"运算符的两个字段

php - sql - 子查询计算分数

mysql - 从两个层面寻找 child 用户

mysql - 多个 NOT EXISTS SQL

PHP 2 人从同一台计算机同时登录

javascript - 在同一页面的另一个选项卡上运行 php 文件而不提交表单值

MYSQL 以树格式输出或添加级别(父子)

c# - 从 SQL 表到 Int 列表的列 C#