有沒有辦法檢查同一個in子句中是否存在多個值,而不重寫相同的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 |
+----+--------------+---------------+-------------+
說我首先要全體員工衛生組織,中間或最後一個名稱是丹尼爾和彼得 - 因此,我想ID爲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被解釋爲一個布爾值。
你可以把它周圍的'其中 '丹尼爾'()或 '彼得' 在()' –
@ lan2thedv如何有關串聯'FIRST_NAME,middle_name'和'last_name'成'fullname',然後查詢'fullname'上的'substrings',這會簡化查詢嗎? –
@juergend是的,但仍然需要兩個子句,這是我想要避免 – Ian2thedv