簡體   English   中英

查詢時使用MYSQL Select Case

[英]MYSQL Select Case when query

我正在嘗試執行下面的mysql查詢,看不到我在做什么錯,我希望查詢的WHEN PART可以得到結果,而我可以從ELSE PART那里得到結果。

SELECT 
   CASE 
   WHEN `club_name` = '7' THEN (
      SELECT group_concat(DISTINCT mobile) from member WHERE `club_name` = '7'
   ) 
   ELSE (SELECT group_concat(mobile) from member) 
   END AS mobile 
FROM member

提前致謝。

我相信這是一種被mysqls擴展燒毀到group by語句的情況

選擇列表可以引用未在GROUP BY子句中命名的非聚合列

...服務器可以從每個組中自由選擇任何值,因此,除非它們相同,否則選擇的值是不確定的。 ...

SELECT 
   CASE 
   WHEN `club_name` = '7' THEN (
      SELECT group_concat(DISTINCT mobile) from member WHERE `club_name` = '7'
   ) 
   ELSE (SELECT group_concat(mobile) from member) 
   END AS mobile 
FROM member
GROUP BY mobile

SQL小提琴

WITH GROUP BY返回(我相信這是您的追求)

MOBILE
abc,def,def,xyz,xyz,xyz,lmn
abc,def,def,xyz,xyz,xyz,lmn
xyz,lmn
abc,def,def,xyz,xyz,xyz,lmn

沒有分組依據:

MOBILE
abc,def,def,xyz,xyz,xyz,lmn
abc,def,def,xyz,xyz,xyz,lmn
abc,def,def,xyz,xyz,xyz,lmn
abc,def,def,xyz,xyz,xyz,lmn
xyz,lmn
xyz,lmn
xyz,lmn

只返回1行...

SELECT 
   CASE 
   WHEN `club_name` = '7' THEN (
      SELECT group_concat(DISTINCT mobile) from member WHERE `club_name` = '7'
   ) 
   ELSE (SELECT group_concat(mobile) from member) 
   END AS mobile 
FROM member
WHERE `club_name` = '7'
GROUP BY mobile

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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