select 全部来自 table1 而 sqlite 的 table2 中的条目为零?
select all from table1 with zero entries in table2 in sqlite?
考虑 2 个表,用户和联系人:
CREATE TABLE user (
id INT,
name VARCHAR(36)
);
CREATE TABLE contact (
id INT,
phone INT,
userID INT
);
INSERT INTO user (id,name) VALUES
(1,'Frank'),
(2,'Henry'),
(3,'John')
INSERT INTO contact (id,phone,userID) VALUES
(1,911,1),
(2,922,2),
(3,933,2)
我对所有没有联系方式的用户条目感兴趣。
这些表的外连接returns 4 个结果:
SELECT contact.*, user.*
FROM contact
LEFT JOIN user
ON contact.userID = user.id
UNION ALL
SELECT contact.*, user.*
FROM user
LEFT JOIN contact
ON contact.userID = user.id
WHERE contact.userID IS NULL
如何 select contact.userID 为空的所有用户(在本例中为 1 个结果)?
这是您的第二个子查询:
SELECT c.*, u.*
FROM user u LEFT JOIN
contact c
ON c.userID = u.id
WHERE c.userID IS NULL;
它完全符合您的要求,尽管我会从 SELECT
中删除 c.*
。
考虑 2 个表,用户和联系人:
CREATE TABLE user (
id INT,
name VARCHAR(36)
);
CREATE TABLE contact (
id INT,
phone INT,
userID INT
);
INSERT INTO user (id,name) VALUES
(1,'Frank'),
(2,'Henry'),
(3,'John')
INSERT INTO contact (id,phone,userID) VALUES
(1,911,1),
(2,922,2),
(3,933,2)
我对所有没有联系方式的用户条目感兴趣。
这些表的外连接returns 4 个结果:
SELECT contact.*, user.*
FROM contact
LEFT JOIN user
ON contact.userID = user.id
UNION ALL
SELECT contact.*, user.*
FROM user
LEFT JOIN contact
ON contact.userID = user.id
WHERE contact.userID IS NULL
如何 select contact.userID 为空的所有用户(在本例中为 1 个结果)?
这是您的第二个子查询:
SELECT c.*, u.*
FROM user u LEFT JOIN
contact c
ON c.userID = u.id
WHERE c.userID IS NULL;
它完全符合您的要求,尽管我会从 SELECT
中删除 c.*
。