. Есть ли способ проверить, существуют ли несколько значений в одном и том же разделе, без переписывания того же предложения IN?MySQL. Проверьте, существует ли несколько значений в одном и том же разделе IN.
Пример
Employee Table:
+----+--------------+---------------+-------------+
| id | first_name | middle_name | last_name |
+----+--------------+---------------+-------------+
| 1 | Ian | Daniel | de Villiers |
| 2 | Karien | | Tolmie |
| 3 | John | Peter | Green |
| 4 | Daniel | Silie | von Guns |
| 5 | Francois | Roos | Krans |
+----+--------------+---------------+-------------+
Скажем, я хочу, чтобы все сотрудников Whos первый, средний или фамилия либо Даниэль или Питер - таким образом, я хочу идентификаторами 1, 3 и 4.
Единственный способ я знаю, как сделать это:
SELECT id
FROM employees
WHERE (first_name IN ("Daniel", "Peter"))
OR (middle_name IN ("Daniel", "Peter"))
OR (last_name IN ("Daniel", "Peter"))
Это может быть прийти довольно долго, если у меня есть несколько значений для тестирования или имеют чрезмерное количество значений в предложении IN
.
Я попытался
SELECT id
FROM employees
WHERE (first_name OR middle_name OR last_name IN ("Daniel", "Peter"))
, но я думаю, что приведет к first_name должны интерпретироваться как логическое значение.
Вы можете повернуть его вокруг 'где 'Daniel' в() или 'Питер' в()' –
@ lan2thedv как о конкатенации 'first_name, middle_name' и' 'last_name' в fullname', а затем выполнить запрос для 'substrings' на' fullname', это упростит запрос? –
@juergend да, но все равно потребуются два предложения, что я и стараюсь избегать – Ian2thedv