在我的MySQL數據庫中,我有兩列設置像這樣(例如):MySQL的多行SELECT查詢
series_id category_id
1 1
1 2
1 3
2 1
2 3
3 2
4 1
4 2
什麼是正確的選擇查詢我可以用它來選擇series_id當category_id = 1和2?
當前的查詢是這樣的:
SELECT series_id
FROM table
WHERE category_id = '1'
OR category_id = '2'
GROUP BY series_id"
,因爲這樣的:
SELECT series_id
FROM table
WHERE category_id = '1'
AND category_id = '2'
GROUP BY series_id
不檢索任何結果
在關於這個例子,我想它返回兩行,其中series_id是1和2,所以結果如下所示:
series_id
1
4
(可選/獎金)如果有可能想出另一種解決方案或利用:
GROUP_CONCAT(category_id SEPARATOR ', ') AS category
用於從該查詢返回的series_id(一個或多個),以使返回的結果是:
series_id category
1 1, 2, 3
4 1, 2
這將非常感激。感謝您抽出寶貴的時間幫助解決這一具有挑戰性的問題。
我測試您所提供的解決方案,它精美的作品。關於相同的示例mysql數據庫表,我還有一個相關的問題。如果你想檢索WHERE category_id <>'1'和category_id <>'3'的結果,你會怎麼做,因此在這個例子中唯一返回的結果是series_id = 3時的結果? –
@RichVRed:你正在尋找一個反連接。在MySQL中,[兩個性能最高的方法](http://explainextended.com/2009/09/18/not-in-vs-not-exists-vs-left-join-is-null-mysql/)通過一個帶'NULL'測試的外連接(類似於我上面的回答)或者通過'NOT IN'(類似於[Jon Woo的回答](http://stackoverflow.com/a/12318244/623041))。在[sqlfiddle](http://sqlfiddle.com/#!2/07bde/14)上查看它們。 – eggyal
非常感謝! –