Нужен ли вам с подзапросом SQL - PullRequest
0 голосов
/ 16 декабря 2018

Мне нужно помочь с MySQL Subquery.

У меня есть 1 таблица, в которую я вставляю данные, которые выбираю из второй таблицы, но мне нужно сделать исключение для тех идентификаторов, которые записаны в 3-й таблице...

Как я могу это сделать?

Я вставляю в основную таблицу секунду, используя этот запрос:

INSERT INTO player_ranking (SELECT @i:=@i+1 as rank, t.id FROM player t, 
(SELECT @i:=0) AS temp ORDER BY level DESC, exp DESC LIMIT 3)

Но мне нужно сделать там условие вроде "ГДЕ идентификатор из этой таблицы не равен идентификатору из третьей таблицы ...

Не могли бы вы мне помочь, пожалуйста?

1 Ответ

0 голосов
/ 16 декабря 2018

Чтобы исключить записи, присутствующие в третьей таблице, вы можете использовать LEFT JOIN в этой таблице с предложением WHERE, которое выбирает только несовпадающие записи.

В приведенном ниже запросе предполагается, чтотретья таблица называется table3 и имеет столбец с именем id, который ссылается на столбец id в таблице player.

Как:

INSERT INTO player_ranking (
    SELECT @i:=@i+1 as rank, t.id 
    FROM player AS t
    CROSS JOIN (SELECT @i:=0) AS temp
    LEFT JOIN table3 on t.id = table3.id
    WHERE table3.id IS NULL
    ORDER BY level DESC, exp DESC 
    LIMIT 3
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...