#mysql
#mysql
Вопрос:
Есть такие таблицы
create table a (id int,pid int);
insert into a values
(1, NULL),
(2,1),
(3,5);
create table b (aid int);
insert into b values
(1),
(2),
(3);
и запрос
select *
from
(select distinct aid as id
from b
) as t
left join a using(id)
Результат
id pid
1 (null)
2 1
3 5
Я хочу удалить записи, pid которых присутствуют в таблице t как id. В случае — запись с идентификатором 2
Я пытался использовать
where not exists (select id from t where t.id = a.pid)
и
left join t t2 on t2.id = a.pid
но в обоих случаях возникает ошибка 1146 — Таблица не существует, потому что t является доставленной таблицей
Надеюсь сделать это в одном запросе. Любая помощь будет оценена
Комментарии:
1. таблица поиска
b
,where not exists (select 1 from b where b.aid = a.pid)
2. кажется, вы правы — спасибо
Ответ №1:
MySQL, конечно, правильный, t не существует, но поскольку t является производным от b, и вы хотите видеть только, что есть какая-либо идентичная помощь, вы должны использовать это вместо,
таким образом, вы получаете
select *
from
(select distinct aid as id
from b
) as t
left join a using(id)
where not exists (select NULL from b where b.aid = a.pid)
Смотрите пример http://sqlfiddle.com /#!9/9bf8666/14