如何在聯接中的多行上實現SQL 條件
所提出的問題圍繞著從聯接中選擇擁有兩個特定標籤的使用者手術。雖然使用 IN 提供的範例傳回具有任一標籤的用戶,但期望的結果是檢索擁有這兩個標籤的用戶。要實現此目的,利用 ALL 關鍵字是不合適的。
解
1.測試不同的行
SELECT * FROM users WHERE EXISTS (SELECT * FROM tags WHERE user_id = users.id AND name ='tag1') AND EXISTS (SELECT * FROM tags WHERE user_id = users.id AND name ='tag2')
SELECT * FROM users WHERE id IN (SELECT user_id FROM tags WHERE name ='tag1') AND id IN (SELECT user_id FROM tags WHERE name ='tag2')
SELECT u.* FROM users u INNER JOIN tags t1 ON u.id = t1.user_id INNER JOIN tags t2 ON u.id = t2.user_id WHERE t1.name = 'tag1' AND t2.name = 'tag2'
2.聚合行
SELECT users.id, users.user_name FROM users INNER JOIN tags ON users.id = tags.user_id WHERE tags.name IN ('tag1', 'tag2') GROUP BY users.id, users.user_name HAVING COUNT(*) = 2
以上是如何使用 SQL 連線選擇具有多個標籤的使用者?的詳細內容。更多資訊請關注PHP中文網其他相關文章!