[英]SQL SELECT and check column from second table
我的數據庫中有兩個表。 從表 B 我收集了一些數據。 我通過使用 JOIN 包含表 A 中的數據。在此表中有一個列 user_id。 表 B 中的用戶 id 是表 A 中的 id。不,我想從表 A 中獲取所有數據,但如果表 A id 位於表 B 列 user_id 中,則不顯示數據。 我認為訣竅是正確使用 JOIN 但我需要檢查整列而不僅僅是一行。
SQL 查詢(可能不起作用)
SELECT * FROM tableB
JOIN tableA
ON tableB.user_id = tableA.id
WHERE tableB.user_id != tableA.id
我想我得到了你想要的。 你想not exists
:
SELECT *
FROM tableB b JOIN
tableA a
ON b.user_id = a.id
WHERE NOT EXISTS (SELECT 1
FROM tableA a2
WHERE b.user_id = a2.id
);
編輯:
我寫了上面,但我沒有完全遵循JOIN
條件。 您似乎想加入id
:
SELECT *
FROM tableB b JOIN
tableA a
ON b.id = a.id
WHERE NOT EXISTS (SELECT 1
FROM tableA a2
WHERE b.user_id = a2.id
);
或者根本不JOIN
:
SELECT *
FROM tableB b
WHERE NOT EXISTS (SELECT 1
FROM tableA a2
WHERE b.user_id = a2.id
);
到 select 表 A 中的所有數據,其中 id 在表 B 中不可用,您不需要加入,而是可以使用not exists
或not in
。
我寧願not exists
使用not exists
:
SELECT * from tableA a
WHERE NOT EXISTS (
SELECT 1
FROM tableB b
WHERE b.user_id = a.id
);
使用not in
:
SELECT * from tableA a
WHERE id not in (SELECT user_id FROM tableB );
DB-小提琴:
create table TableA (id int, name varchar(50), lastname varchar(50));
insert into TableA values(1,'john','smith');
insert into TableA values(2,'Paul','smith');
create table TableB (id int, user_id int, something varchar(50));
insert into TableB values(1,2,'bla');
insert into TableB values(2,3,'bla');
查詢:(使用不存在)
SELECT * from tableA a
WHERE NOT EXISTS (
SELECT 1
FROM tableB b
WHERE b.user_id = a.id
);
Output:
ID | 姓名 | 姓 |
---|---|---|
1 | 約翰 | 史密斯 |
查詢:(使用 not in)
SELECT * from tableA
WHERE id not in (SELECT user_id FROM tableB );
Output:
ID | 姓名 | 姓 |
---|---|---|
1 | 約翰 | 史密斯 |
db<小提琴在這里
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.