Я не понимаю, как этот запрос работал. Это какая-то продвинутая функция mysql, которую я не могу понять?Вы можете объяснить этот SQL-запрос?
select A.id from A where A.id in (select B.id from B where B.id = A.id)
Я не понимаю, как этот запрос работал. Это какая-то продвинутая функция mysql, которую я не могу понять?Вы можете объяснить этот SQL-запрос?
select A.id from A where A.id in (select B.id from B where B.id = A.id)
ненужный коррелируют подзапрос, который выборка всех строк, где идентификатор таблицы А соответствует идентификатору таблицы B. Это может также быть написано как
select id
from A
where id in (select id from B)
(OR) Использованием INNER JOIN
select a.id
from A a
join B b on a.id = b.id;
(ИЛИ) с использованием WHERE EXISTS
select a.id
from A a
where exists (select 1 from B where id = a.id);
То, что вы видите, является подзапросом или вложенным запросом. Внутренний запрос дает массив результатов, а затем внешний запрос использует этот массив для фильтрации строк таблицы A.
Весь вопрос не имеет смысла, хотя ...
Лучше запрос будет:
SELECT A.id from A JOIN B ON A.id = B.id;
это не просто ничто, но внутреннее соединение только
SELECT A.id from A INNER JOIN B ON A.id = B.id;
Выберите 'id's который существуют как в A, так и B. – Blank
Не так продвинутый. Коррелированный подзапрос. – jarlh