我是SQL Server的初學者。我試圖解決這個問題:SQL Server 2014:僅選擇與其他表中的所有行匹配的行
從「ItemTag」表中選擇所有(不同的)「item_id」,其對應的「tag_id」值至少與「UserTagList」表中的所有值相匹配。
我嘗試了加入以下而是結果我得到的查詢應該返回ITEM_ID 5,因爲它具有TAG_ID的3 & 4.
任何幫助深表感謝。
下面是SQL架構
的SQL Server 2014架構設置:
CREATE TABLE UserTagList (id INT);
INSERT INTO UserTagList (id)
VALUES (3), (4);
CREATE TABLE ItemTag (id INT, item_id INT, tag_id INT);
INSERT INTO ItemTag (id, item_id, tag_id)
VALUES (1, 5, 3), (2, 5, 4), (3, 5, 6), (4, 6, 3), (5, 7, 4);
查詢1:
SELECT i.item_id, i.tag_id
FROM ItemTag AS i
JOIN UserTagList AS u ON i.tag_id = u.id
| item_id | tag_id |
|---------|--------|
| 5 | 3 |
| 5 | 4 |
| 6 | 3 |
| 7 | 4 |
這對我的問題非常合適。如果UserTagList表中存在「no」或「some」tag_id的匹配項,並且僅返回具有UserTagList表中所有標籤的項目,則返回0結果。謝謝@Gordon Linoff – rad123