有新聞和類別。新聞可以屬於多個類別,或者根本沒有類別。我需要查詢所有不屬於特定類別的新聞(即2)(如果新聞屬於類別2和3,我們仍然不需要)。可以改進此SQL查詢嗎?
看來我用這種方式解決了這個問題,但我對SQL不太熟悉,所以對於任何想法和批評都會非常感激。對不起,也許沒有意義的小問題。
SELECT * FROM news n
LEFT JOIN news_cats nc ON n.id = nc.cat_id
WHERE n.id NOT IN (SELECT news_id FROM news_cats WHERE news_cats.cat_id = 2)
GROUP BY n.id;
哪個RDBMS是這個呢?請添加一個標籤來指定您是使用'mysql','postgresql','sql-server','oracle'還是'db2' - 或者其他的東西。 –
對我來說似乎完全沒問題;這是我最有可能做到的 – HoneyBadger
用'AND news_cats.cat_id!= 2'代替子查詢中的所有位置 – Mihai