2016-05-10 7 views
-1

У меня есть база данных, где все идентификаторы хранятся у пользователя. Вы можете получить на этом пути:Как получить идентификатор, которого у вас нет?

SELECT 'player_id' FROM 'club' WHERE user_id = 1 

Но я хочу знать, какие идентификаторы игроков не имеет в своем «клубе». ВСЕ идентификаторы вы можете получить, хранятся в «players_db», и вы получите их, как этот

SELECT 'id' FROM 'players_db' 

как я могу только получить идентификаторы, что у меня не было в моем клубе. Так что, как и все id из 'players_db', минус все id из 'club' = всех идентификаторов, которых у вас нет в вашем клубе.

+5

Сначала покажи нам свои данные таблицы. Лучший пример - все дескрипторы таблицы. –

+0

показать, что является общим столбцом в обеих таблицах. – RJParikh

+2

Опубликовать вывод 'SHOW CREATE TABLE' запроса для обеих таблиц. – Mjh

ответ

1

Попробуйте выполнить запрос ниже. Вы должны использовать NOT IN.

SELECT id FROM player_db WHERE id 
NOT IN (SELECT player_id FROM club); 
0

Вам не нужно использовать дополнительный запрос для этого только потому, что он неэффективен. вы должны использовать внутреннее соединение в этом случае ..

SELECT c.player_id FROM club c INNER JOIN User u ON u.user_id = c.user_id WHERE c.user_id = 1 
+0

'INNER JOIN' будет соответствовать записям. Вероятно, вы имели в виду «LEFT JOIN» с фильтрацией, где совпадение «null». – Mjh

0

Использование NOT EXISTS.

Запрос

SELECT id FROM player_db p 
WHERE NOT EXISTS(
    SELECT 1 FROM club c 
    WHERE p.id = c.player_id 
); 
Смежные вопросы