SQL ВНУТРЕННЕЕ СОЕДИНЕНИЕ двух массивов значений из одной таблицы

#mysql #sql #set #intersection

#mysql #sql #установить #пересечение

Вопрос:

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

Это один запрос, в котором я получаю одну строку, возвращенную, как и ожидалось:

 SELECT ID FROM table_name WHERE ID IN (7188,2442,10350) AND ID IN (10350,6936)
  

Как и ожидалось, возвращает одну строку с идентификатором 10350.

Но если я попробую этот запрос:

 SELECT ID FROM table_name WHERE ID IN (7188,2442) AND ID IN (10350,6936)
  

возвращает всю таблицу вместо нулевых строк.

Очевидно, что мой синтаксис неверен, но я не знаю, как написать правильный запрос, который найдет пересечение двух массивов. Могу ли я, пожалуйста, узнать, как правильно написать такое пересечение? Пожалуйста, обратите внимание, что это только одна таблица (в отличие от ВНУТРЕННЕГО соединения из нескольких таблиц). Я должен использовать несколько массивов в качестве сравниваемых наборов.

Я долго искал SO и Google, но, похоже, ничего не появилось. Кажется, что на это должен быть простой ответ.

Комментарии:

1. Пожалуйста, опубликуйте инструкцию CREATE, инструкцию INSERT с образцами данных и версией вашего сервера.

2. Итак, вы собираетесь предоставлять список / массив и другой, отличный список / массив, где вам нужно, чтобы поле ID существовало в обоих списках / массивах?

3. Я не могу воспроизвести этот вывод

4. Я тоже: db-fiddle.com/f/po7vGB4qRdryYu6x1WiLAd/0

Ответ №1:

Я запускал этот запрос и в конце концов получал пустой результат. Но затем я немедленно отправил результат в функцию WordPress, которая возвращает все строки, если вы вызываете пустой массив в качестве одного из значений в $ args.

Когда я увидел ваши комментарии о том, что результаты поиска не реплицировались, я понял, что мне нужно еще больше изолировать проблему. Итак, эти комментарии помогли мне решить проблему.