Я пытаюсь написать sql с предложением where, которое проверяет, есть ли какой-либо элемент в списке в другом списке. Есть ли более короткий способ сделать это, а не проверять каждого члена первого списка?Найти список значений в списке значений
SELECT * from FOO
WHERE FOO.A IN ('2','3', '5', '7','11','13','17','19') OR
FOO.B IN ('2','3', '5', '7','11','13','17','19') OR
FOO.C IN ('2','3', '5', '7','11','13','17','19') OR
FOO.D IN ('2','3', '5', '7','11','13','17','19') OR
FOO.E IN ('2','3', '5', '7','11','13','17','19') OR
FOO.F IN ('2','3', '5', '7','11','13','17','19')
Это упрощенная sql.
пытается не мутить воду слишком много, но так как вы спросите:
В конце концов, что я пытаюсь сделать здесь, выберите строки из FOO, что имеет столбцы удовлетворения различных критериев. Эти критерии хранятся во второй таблице (назовите ее BAR), в основном db, имя, тип должны совпадать, а флаг должен быть равен 1. Планировал ли построить список IN из BAR, сравнивая их с именами столбцов в INFORMATION_SCHEMA.COLUMNS, содержащих FOO
FOO:
+--------+--------+---------+---------+--------+-------+
| DB | Name | Type | Col1 | Col2 | Col3 |
+--------+--------+---------+---------+--------+-------+
| 4 | AC1 | LO | 1 | 10 | 2 |
| 4 | AC1 | HI | 2 | 20 | 4 |
| 1 | DC2 | HI-HI | 11 | 5 | 2 |
| 1 | DC2 | HI | 22 | 10 | 4 |
| 1 | DC2 | LO | 33 | 15 | 6 |
+--------+--------+---------+---------+--------+-------+
BAR:
+--------+--------+---------+---------+--------+
| DB | Name | Type | Field | Flag |
+--------+--------+---------+---------+--------+
| 4 | AC1 | LO | Col1 | 1 |
| 4 | AC1 | HI | Col1 | 1 |
| 1 | DC2 | HI-HI | Col1 | 1 |
| 1 | DC2 | HI | Col1 | 1 |
| 1 | DC2 | LO | Col1 | 1 |
| 4 | AC1 | LO | Col2 | 0 |
| 4 | AC1 | HI | Col2 | 0 |
| 1 | DC2 | LO | Col2 | 0 |
| 1 | DC2 | HI-HI | Col2 | 0 |
| 1 | DC2 | HI | Col2 | 0 |
| 4 | AC1 | LO | Col3 | 0 |
| 4 | AC1 | HI | Col3 | 0 |
| 1 | DC2 | LO | Col3 | 0 |
| 1 | DC2 | HI-HI | Col3 | 0 |
| 1 | DC2 | HI | Col3 | 0 |
+--------+--------+---------+---------+--------+
Какой диалект SQL вы используете? Если это то, где вы можете определить переменные, тогда это должно быть выполнимо. Во всяком случае, что такое диалект? –
В настоящее время я пытаюсь заставить это работать с ms sql – aggaton
Можете ли вы опубликовать структуру таблицы для 'Foo'? Вам нужны другие столбцы в таблице? – Taryn