我有一個練習表和一個標簽表。每個練習都可以有幾個標簽,所以我有第三個表來表示一對多關系。
我試圖實作的是獲得所有沒有特定標簽的練習。
資料示例:
Exercise 1
Exercise 2
Exercise 3
Tag 1
Tag 2
Exercise 1 - Tag 1
Exercise 1 - Tag 2
Exercise 2 - Tag 1
Exercise 3 - Tag 2
在這種情況下,尋找沒有標簽 1 的練習,我應該只得到練習 3。
我最后一次嘗試是:
SELECT Exercise.id FROM Exercise, Tags
INNER JOIN TagsExercises
ON Exercise.id=TagsExercises.idExercise AND TagsExercises.idTag=Tags.id
WHERE Tags.id NOT in ( '3' )
GROUP BY Exercise.id;
由于帶有標簽 2 的條目,我得到了練習 3 和練習 1... uu 不確定如何形成 SQL,有什么想法嗎?
uj5u.com熱心網友回復:
您想要id表中的所有 s,Exercise除了帶有標簽“1”的那些:
SELECT id FROM Exercise
EXCEPT
SELECT idExercise FROM TagsExercises WHERE idTag = '1';
IN僅當您想包含多個標簽時才使用運算子。
或者:
SELECT id
FROM Exercise
WHERE id NOT IN (SELECT idExercise FROM TagsExercises WHERE idTag = '1');
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/491092.html
標籤:sql sqlite where子句 sql-in sql 除外
