如何在IN
子句中使用來自LEFT JOIN
的結果?MySQL - 使用來自LEFT JOIN的IN子句檢查多個值結果
這是我的查詢到目前爲止:
SELECT
n.id,
n.title,
n.public,
CAST(GROUP_CONCAT(DISTINCT ngm.members_group_id) AS CHAR(1000)) AS `news_groups_text`,
GROUP_CONCAT(DISTINCT ngm.members_group_id) AS `news_groups`
FROM news n
LEFT JOIN news_groups_map ngm ON ngm.news_id = n.id
WHERE public=0
GROUP BY n.id
它返回表單結果
id title public news_groups_text news_groups
159 Test 0 5,6,4 (BLOB) 5 bytes
我怎樣才能添加,檢查文章屬於哪個羣體的條款?例如,我有4和6組,我需要返回所有在news_groups
中至少有一個的結果。
我試圖去檢查一組與IN
條款,加入這一到WHERE
條款:
WHERE public=0 AND
4 IN (GROUP_CONCAT(DISTINCT ngm.members_group_id))
但後來我得到錯誤[Err] 1111 - Invalid use of group function
我如何通過濾除文章羣體?如果我至少可以檢查一個組,我可以將它們鏈接起來。AND
謝謝!
我認爲在這種情況下'IN'語句與'='所做的相同。另外,你確定連接的函數會返回值'4'嗎?我懷疑你在這裏丟失了一些東西。 –
GROUP BY無效,不會在較新的MySQL版本上執行。一般的GROUP BY規則說:如果指定了GROUP BY子句,SELECT列表中的每個列引用必須標識一個分組列或者是一個set函數的參數。 – jarlh