簡體   English   中英

IN子查詢中的GROUP_CONCAT

[英]GROUP_CONCAT in IN Subquery

SELECT  A.id, A.title, 
FROM (`table`) as A
WHERE A.active = '1'
AND A.id IN (SELECT GROUP_CONCAT(B.id) from B where user = 3)

如果我SELECT GROUP_CONCAT(B.id) from B where user = 3啟動子查詢SELECT GROUP_CONCAT(B.id) from B where user = 3 ,我獲得1,2,3,4。 但是,如果我啟動整個查詢,我只獲得一行。

但是如果我試圖用它的值替換子查詢(1,2,3,4)

SELECT  A.id, A.title, 
FROM (`table`) as A
WHERE A.active = '1'
AND A.id IN (1,2,3,4)

我獲得了4行......正如我所需要的那樣。

我的錯誤在哪里?

MySQL看到子查詢只返回一個字段/行,因此將其視為:

... and A.id IN ('1,2,3,4')

歸結為A.id = '1,2,3,4'

對於'in'查詢,不需要group_concat的東西,只需執行:

... and A.id IN (select B.id FROM b where user = 3)
SELECT name
FROM test
WHERE salry
IN (

SELECT GROUP_CONCAT( CONCAT('''', salry,'''' ) ) 
FROM test group by salry
)

這個concat將使用單引號追加結果集仍然不能像salry一樣工作在結果集'1000','2000','3000','40000' ......

使用FIND_IN_SET()

SELECT  A.id, A.title, 
FROM (`table`) as A
WHERE A.active = '1'
AND FIND_IN_SET(A.id,(SELECT GROUP_CONCAT(B.id) from B where user = 3))

暫無
暫無

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

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