首頁 > 資料庫 > mysql教程 > 如何在 SQL 連線中將條件套用到多行?

如何在 SQL 連線中將條件套用到多行?

Linda Hamilton
發布: 2024-12-24 03:01:23
原創
513 人瀏覽過

How to Apply Conditions to Multiple Rows in SQL Joins?

使用SQL 將條件套用於連接中的多行

使用聯接時,通常需要在連接表中。這可以使用涉及測試單一行或聚合行的各種技術來實現。

使用 EXISTS、子查詢和聯結測試單行

1A。 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');
登入後複製

1B。子查詢:

子查詢也可以用於根據連接表中的條件選擇行。

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');
登入後複製

1C。 JOIN:

INNER JOIN 可用來測試多行上的條件。但是,與其他方法相比,此方法的可擴展性較低。

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';
登入後複製

使用 COUNT 和字串處理聚合行

2A。計數:

此技術依賴於按計數聚合行。當標籤不能多次應用於同一使用者時,它是有效的。

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;
登入後複製

2B。字串處理:

對於提供字串處理擴充的資料庫,例如 GROUP_CONCAT 和 FIND_IN_SET,字串處理可用於檢查多個標籤。然而,這種方法效率較低。

SELECT user.id, users.user_name, GROUP_CONCAT(tags.name) AS all_tags
FROM users INNER JOIN tags ON users.id = tags.user_id
GROUP BY users.id, users.user_name
HAVING FIND_IN_SET('tag1', all_tags) > 0 AND FIND_IN_SET('tag2', all_tags) > 0;
登入後複製

以上是如何在 SQL 連線中將條件套用到多行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板