我需要返回一个别名列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';
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
“字段列表”中的未知列“eventTitle”
您不能在同一SELECT子句中引用列别名。将其放入子查询中。此外,CASE您可以使用IFNULL(或更标准的COALESCE)代替。
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
Run Code Online (Sandbox Code Playgroud)
或者您可以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
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我认为你要么有空检查,要么LEFT JOIN倒退。当您使用 时LEFT JOIN,您会NULL在没有匹配项时进入第二个表中的列。因此,将NULL是course.title,不是session.title。