如何在MySQL中使用CONCAT的别名?
我需要返回一个别名列如何在MySQL中使用CONCAT的别名?,mysql,Mysql,我需要返回一个别名列eventTitle,其内容可以根据另一列的值是否为null而变化。我还需要使用该别名的值来连接其他一些值,以返回另一个别名title 我正在运行以下查询: $sql = 'SELECT CASE WHEN session.title IS NOT NULL THEN session.title ELSE course.title END AS eventTitle, CONCAT(e
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
(或更标准的合并)而不是CASE
或者您可以在同一个查询中使用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
时,如果没有匹配项,则第二个表的列中会出现NULL
。因此,NULL
列将是course.title
,而不是session.title
感谢您的反馈。不幸的是,当我尝试运行时,我在“字段列表”中得到了“session.city”的Unknown列。
抱歉,修复了它。需要从子查询返回这些列。是的,这确实有效。我认为第二种方法更容易遵循。谢谢是的,当计算非常复杂时,我通常使用第一种方法。如果没有IFNULL
函数,那么我必须编写CASE
表达式,我会这样做。
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