首頁 >資料庫 >mysql教程 >如何使用 SQL 連線選擇具有多個標籤的使用者?

如何使用 SQL 連線選擇具有多個標籤的使用者?

DDD
DDD原創
2024-12-20 05:41:14219瀏覽

How to Select Users with Multiple Tags Using SQL Joins?

如何在聯接中的多行上實現SQL 條件

所提出的問題圍繞著從聯接中選擇擁有兩個特定標籤的使用者手術。雖然使用 IN 提供的範例傳回具有任一標籤的用戶,但期望的結果是檢索擁有這兩個標籤的用戶。要實現此目的,利用 ALL 關鍵字是不合適的。

1.測試不同的行

  • EXISTS 子> 檢查多行中是否有符合條件的行。
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.聚合行

  • COUNT(需要資料保護): 對聚合行進行計數確保兩個標籤都存在。
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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn