【问题标题】:MySQL Error 1054: Setting column name and use to where clauseMySQL 错误 1054:设置列名并使用 where 子句
【发布时间】:2015-01-30 15:41:16
【问题描述】:

如何将 where 子句与新列名一起使用?

SELECT 
    IF(cond, 'yes', 'no') AS 'NEW_COLUMN'
FROM
    table
WHERE
    NEW_COLUMN = 'yes'

MySQL 错误 1054:“where 子句”中的未知列“NEW_COLUMN”

【问题讨论】:

  • 你的示例SQL可以重构为SELECT 'yes' FROM table WHERE cond
  • @paul:把它写成答案。

标签: mysql sql select


【解决方案1】:

在大多数 SQL 版本中,您需要使用子查询、公用表表达式或重复逻辑。 MySQL 扩展了having 子句的使用来处理这个问题。

因此,以下非标准 SQL 在 MySQL 中有效:

SELECT IF(cond, 'yes', 'no') AS 'NEW_COLUMN'
FROM table
HAVING NEW_COLUMN = 'yes';

【讨论】:

    【解决方案2】:

    我不确定您的“实际”用例,但您可以通过重构 SQL 轻松实现示例:

    SELECT 'yes' FROM table WHERE cond

    【讨论】:

      猜你喜欢
      • 2011-03-22
      • 1970-01-01
      • 1970-01-01
      • 2015-09-11
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-19
      相关资源
      最近更新 更多