gpt4 book ai didi

mysql - 如何不选择带有链接表的行

转载 作者:行者123 更新时间:2023-11-29 02:46:37 25 4
gpt4 key购买 nike

我有 3 个表:

商店

--------------------------------------------------
| ID | STORE |
--------------------------------------------------
| - 1 | Store1 |
--------------------------------------------------
| - 2 | Store2 |
--------------------------------------------------
| - 3 | Store3 |
--------------------------------------------------
| - 4 | Store4 |
--------------------------------------------------

用户

--------------------------------------------------
| ID | USER |
--------------------------------------------------
| - 1 | User1 |
--------------------------------------------------
| - 2 | User2 |
--------------------------------------------------
| - 3 | User3 |
--------------------------------------------------
| - 4 | User4 |
--------------------------------------------------

用户商店

--------------------------------------------------
| USER | STORE |
--------------------------------------------------
| --- 1 -- | ----1----- |
--------------------------------------------------
| --- 1 -- | ----2----- |
--------------------------------------------------
| --- 2 -- | ----1----- |
--------------------------------------------------
| --- 2 -- | ----2----- |
--------------------------------------------------
| --- 3 -- | ----3----- |
--------------------------------------------------

我正在使用它进行选择。

SELECT S.id, S.store
FROM stores S
JOIN user_stores L
ON S.id = L.store
JOIN users U
ON U.id = L.user
WHERE L.user <> ?

我的问题:

我正在尝试选择链接到除当前用户(又名用户 ID)之外的所有人的所有商店。此查询确实选择了未链接​​到当前用户的商店,但仍然存在问题。

我的查询仍然选择当前用户拥有的商店,前提是另一个用户也链接了这家商店(因为这是链接到其他用户的行)。

是否可以仅使用可用的用户 ID 从 select 语句中排除这些条目?

已解决

SELECT S.id, S.store
FROM stores S
JOIN user_stores L
ON S.id = L.store
JOIN users U
ON U.id = L.user
and L.user <> ?
and S.id not in (
select L.store from user_stores L
where L.user = ?
);

最佳答案

您可以使用 NOT IN 过滤掉给定用户拥有的商店:

SELECT S.id, S.store
FROM stores S
JOIN user_stores L
ON S.id = L.winkel
JOIN users U
ON U.id = L.user
and L.user <> ?
and s.store not in (
select store from user_stores u
where user = ?
);

关于mysql - 如何不选择带有链接表的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41346861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com