[英]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.