簡體   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