выбрать все из таблицы1 с нулевыми записями в таблице2 в sqlite? - PullRequest
0 голосов
/ 21 октября 2018

Рассмотрим 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)

Меня интересуют все записи пользователя, у которых нет контакта.

Внешнее объединение этих таблиц возвращает 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

Как выбрать всех пользователей, для которых contact.userID равен нулю (1 результат в этом примере)?

1 Ответ

0 голосов
/ 21 октября 2018

Это ваш второй подзапрос:

SELECT c.*, u.*
FROM user u LEFT JOIN
     contact c
     ON c.userID = u.id
WHERE c.userID IS NULL;

Он делает именно то, что вы хотите, хотя я бы удалил c.* из SELECT.

...