簡體   English   中英

帶WHERE IN子句的GROUP_CONCAT

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

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