簡體   English   中英

MySQL選擇CONCAT條件

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM