繁体   English   中英

如何在 MySQL 中为 CONCAT 使用别名?

[英]How can I use an alias for a CONCAT in MySQL?

我需要返回一个别eventTitle ,其内容可以是可变的,具体取决于另一列的值是否为null 我还需要使用该别名的值来连接其他一些值以返回另一个别名title

我正在运行以下查询:

$sql = 'SELECT
        CASE WHEN session.title IS NOT NULL
           THEN session.title
           ELSE course.title
        END AS eventTitle,
        CONCAT(eventTitle, "\n", session.city, ", ", session.state) AS title,
        FROM session
        LEFT JOIN course ON course.id = session.course_id';

我收到以下错误:

“字段列表”中的未知列“eventTitle”

您不能在同一个SELECT子句中引用列别名。 将其放入子查询中。 此外,您可以使用IFNULL (或更标准的COALESCE )代替CASE

SELECT eventTitle, CONCAT(eventTitle, "\n", city, ", ", state) AS title
FROM (SELECT IFNULL(session.title, course.title) AS eventTitle, session.city, session.state
      FROM session
      LEFT JOIN course ON course.id = session.course_id) AS subquery

或者您可以在同一个查询中使用IFNULL两次。

SELECT IFNULL(session.title, course.title) AS eventTitle,
       CONCAT(IFNULL(session.title, course.title), "\n", session.city, ", ", session.state) AS title
FROM session
LEFT JOIN course ON course.id = session.course_id

顺便说一句,我认为您要么进行空检查,要么向后LEFT JOIN 当您使用LEFT JOIN ,当没有匹配项时,您会在第二个表的列中获得NULL 因此,将为NULL的列将是course.title ,而不是session.title

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM