我有一個SQL設置類似於如下:MySQL:GROUP_CONCAT結果的條件?
文章
- ID(PK)
- 名
標籤
- ID(PK)
- 標籤 間
...和第三個表記錄兩者之間的關聯,因爲可以有多個標籤,每一篇文章:
ARTICLE_TAG_ASSOCS
- ID(PK)
- 的article_id(FK)
- TAG_ID(FK)
問題1上:如何找到具有特定標籤的文章?
我能想出是最好的:
SELECT
name, GROUP_CONCAT(CASE WHEN tag = 'some-tag' THEN tag ELSE NULL END) AS tags
FROM
articles, tags, article_tag_assocs
WHERE
articles.id = article_id && tags.id = tag_id && tags IS NOT NULL
GROUP BY
article_id
這是在右邊線;如果文章沒有標籤「some-tag」,那麼該列在「tags」列中顯示爲空值。 但我怎樣才能完全消除這一行?
當然,我試圖追加
&& tags NOT LIKE '%some-tag%'
...我WHERE
條款,學習,你不能在WHERE
條款使用GROUP_CONCAT
別名之前。所以,我想追加:
HAVING tags IS NOT NULL;
...到查詢,結果相同,即MySQL的說,它不認列的「標籤」。
任何幫助表示讚賞。
http://sqlfiddle.com/#!2/a2581/27011 ---'HAVING'完美適合您的情況 – zerkms