在 WHERE 子句中重用选择表达式的子查询

Posted

技术标签:

【中文标题】在 WHERE 子句中重用选择表达式的子查询【英文标题】:Reuse Subquery from Select Expression in WHERE-Clause 【发布时间】:2011-04-19 18:32:40 【问题描述】:

当然不能写

SELECT (some subselect) AS blah FROM t WHERE blah = 'const'

最好的方法是什么?

SELECT (some subselect) FROM t WHERE (some subselect) = 'const'? 查看? 存储函数? 有吗? 其他?

【问题讨论】:

【参考方案1】:

您可以将(some subselect) 移动为FROM 中的表格:

SELECT s.blah
  FROM t, (some subselect) s
 WHERE t.id = s.id
   AND s.blah = 'const'

【讨论】:

但是你必须放弃join on 语法并使用肮脏的where 连接语法? 这是为什么呢?您可以随时使用两者(s 本身就是一个表)。为什么where 很脏?它也是一个连接(交叉连接)并且很有用。

以上是关于在 WHERE 子句中重用选择表达式的子查询的主要内容,如果未能解决你的问题,请参考以下文章

lambda 表达式使用 select 和 where 子句连接多个表

始终选择表中所有记录的 WHERE 子句

mysql查询的where子句中的正则表达式或替换函数

错误:当前子查询表达式仅允许作为配置单元中的 where 子句谓词

Drupal 8 和 PostgreSQL:如何在 WHERE 子句中使用表达式的结果?

来自不同类的 Lambda 表达式中的多个 Where 子句