[英]GROUP_CONCAT with WHERE IN clause
我正在嘗試將具有某些匹配字符串的多個列組合在一起。
SELECT GROUP_CONCAT(`users`.`id`)
FROM `users`
WHERE `users`.`name`
IN ('john','doe','foo','bar');
我沒有收到錯誤,只是結果為NULL
,即使表中有包含所有這些名稱的列。
如何構造查詢以實現預期結果?
問:如何構造查詢以實現預期結果?
答:備份到上一個查詢,該查詢正在運行,並返回預期結果。 然后找出為什么您對該查詢所做的更改會導致意外的行為/意外的結果。
例如,可能您開始像這樣編寫查詢:
SELECT u.id
, u.name
FROM users u
ORDER
BY u.name
然后您運行它進行測試,並驗證它是否返回了預期的結果。 id
為非NULL。 是否填寫了name
欄?
接下來,添加了WHERE
子句,以查看是否可以得到name
列包含“ john”的行。
SELECT u.id
, u.name
FROM users u
WHERE u.name = 'john'
ORDER
BY u.name
運行該命令后是否返回了預期結果? 如果沒有,我們需要弄清楚為什么不這樣做。 該查詢與正在運行的查詢有何不同。
在編寫返回未預期結果的查詢之前,通過逐步細化,在編寫查詢時得到了多大的效果? 給我們看。
然后解釋為什么對該查詢進行的更改(變成另一個查詢)應該產生特定的結果。 即什么結果是“預期結果”。 為什么會有這種結果?
沒有規范,就不可能提出任何建議。 樣本數據和示例輸出將對澄清需求大有幫助。 您甚至可以設置SQLFiddle示例。
如果您正在向忙碌的同事尋求幫助,那么您應該展示一些工作以及獲得的進展。 不僅僅是“這是行不通的查詢”。
https://ericlippert.com/2014/03/05/how-to-debug-small-programs/
否則,我們只是在猜測您期望返回什么結果。
也許答案就像將表達式包裝在IFNULL
一樣簡單
SELECT IFNULL( GROUP_CONCAT(foo) ,'') AS bar
,
但是我們很可能會吠叫猜測完全錯誤的樹。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.