簡體   English   中英

SQL SELECT 並檢查第二個表中的列

[英]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

請參閱我在 Excel 中准備的示例: 數據庫表示例

我想我得到了你想要的。 你想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 existsnot 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM