SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 16.06.2019 07:27:56

polin111
Участник
Зарегистрирован: 12.04.2019
Сообщений: 2

SQL запрос с массивами

Помогите написать запрос.
Есть 3 массива со значениями 3 полей таблицы A[a1,a2], B[b1,b2], C[c1,c2] соответственно.
Есть запрос:


SELECT *
FROM T
WHERE Field1 = a1 AND Field2 = b1 AND Field3 = c1
UNION
SELECT *
FROM T
WHERE Field1 = a2 AND Field2 = b2 AND Field3 = c2
 

То есть  нужно найти все записи, значения полей которых равны наборам из массивов (a[N],b[N],c[N]).
Если массивы большие размером, не хочется лепить запрос через UNION, он выполняется долго и
размер этого запроса большой.
Может быть можно сократить, что-то типа такого

SELECT *
FROM T
WHERE Field1 = ANY(ARRAY[a1,a2,a3]) AND Field2 = ANY(ARRAY[b1,b2,b3]) AND Field3 = ANY(ARRAY[c1,c2,c3])
 

Но в таком виде запрос работает неверно, возвращает записи в полях которых входит хотя бы одно значение массива
из каждого массива.

Отредактированно polin111 (16.06.2019 07:28:12)

Неактивен

 

#2 16.06.2019 07:51:39

klow
Старожил
Зарегистрирован: 06.12.2014
Сообщений: 411

Re: SQL запрос с массивами

Если таких записей много, то можно сохранить в таблицу, например, временную и уже по ней делать выборку.

SELECT *
FROM T JOIN t_tmp t1 ON t.Field1 = t1.a1 AND t.Field2 = t1.b1 AND t.Field3 = t1.c1

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson