[英]MySQL select with CONCAT condition
我想在腦海里編譯這個...我有一個帶有firstname和lastname字段的表,我有一個像“Bob Jones”或“Bob Michael Jones”這樣的字符串和其他幾個字符串。
問題是,我在名字中有Bob,在姓氏中有Michael Jones
所以我想
SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast
FROM users
WHERE firstlast = "Bob Michael Jones"
但它說未知的專欄“firstlast”..任何人都可以幫忙嗎?
您提供的別名用於查詢的輸出 - 它們在查詢本身中不可用。
您可以重復表達式:
SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast
FROM users
WHERE CONCAT(firstname, ' ', lastname) = "Bob Michael Jones"
或者包裝查詢
SELECT * FROM (
SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast
FROM users) base
WHERE firstLast = "Bob Michael Jones"
試試這個:
SELECT *
FROM (
SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast
FROM users
) a
WHERE firstlast = "Bob Michael Jones"
SELECT needefield, CONCAT(firstname, ' ',lastname) as firstlast
FROM users
WHERE CONCAT(firstname, ' ', lastname) = "Bob Michael Jones"
使用CONCAT_WS()。
SELECT CONCAT_WS(' ',firstname,lastname) as firstlast FROM users
WHERE firstlast = "Bob Michael Jones";
第一個參數是其余參數的分隔符。
可以使用重復CONCAT
表達式或使用子查詢的替代方法。 您可以使用HAVING
子句來識別列別名。
SELECT
neededfield, CONCAT(firstname, ' ', lastname) AS firstlast
FROM
users
HAVING firstlast = "Bob Michael Jones"
這是一個有效的SQL小提琴 。
嘗試:
SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast
FROM users
WHERE CONCAT(firstname, ' ', lastname) = "Bob Michael Jones"
除非您將查詢作為子選擇執行,否則您的別名firstlast在查詢的where子句中不可用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.