[精讚] [會員登入]
6363

[MySQL] FIND_IN_SET函數,把多筆條件判斷弄成字串

SQL 我們如果要查找某個欄位是否為某個值的時候,如果要判斷的條件很多,可以用這個函數

分享此文連結 //n.sfs.tw/11606

分享連結 [MySQL] FIND_IN_SET函數,把多筆條件判斷弄成字串@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2019-10-25 09:09:22 最後編修
2017-08-11 22:42:07 By 張○○
 

SQL 我們如果要查找某個欄位是否為某個值的時候,會用 WHERE 去下條件,例如:

SELECT * FROM `table` WHERE `ID`=2

當我們同時要找 `ID`=2, 5, 6, 7, ... 都可以的情況,因為數字不是連續量,用 WHERE 來寫就太醜了:

SELECT * FROM `table` WHERE `ID`=2 OR `ID`=5 OR `ID`=6 OR `ID`=7 OR ...

這時也許 ID 的值可以用 IN 取出,就是所謂的 SUBSELECT,用第2個表table2來取回所需要的ID,也許能解決大部分的問題:

SELECT * FROM `table` WHERE `ID` IN (SELECT `ID` FROM `table2` WHERE ...)

可是總是有情況不美好的時候,也就是無法用 IN 取出我要的 ID,這時如果我們已經能事先知道要查詢哪些 ID,把他用 ',' 組成一個字串,再用  FIND_IN_SET()就能解決這個問題:

SELECT * FROM `table` WHERE  FIND_IN_SET(`ID`, '2,5,6,7,8,9,11,21,33,45')

但這樣子是有缺點的:就算你把那字串的順序交換,他取回的資料還是照原本的順序取回

SELECT * FROM `table` WHERE  FIND_IN_SET(`ID`, '45,5,6,8,9,11,21,33,2,5')

這時得加上排序的方法,只是這方法稍爛,湊合湊合:

SELECT * FROM `table` WHERE  FIND_IN_SET(`ID`, '45,5,6,8,9,11,21,33,2,5') order by FIND_IN_SET(`ID`, '45,5,6,8,9,11,21,33,2,5')

SELECT * FROM `table` WHERE  FIND_IN_SET(`ID`, '45,5,6,8,9,11,21,33,2,5') order by FIELD(`ID`, 45,5,6,8,9,11,21,33,2,5)

 注意field的函式裡面要把每個資料獨立寫

參考資料

[1] https://stackoverflow.com/questions/6297369/order-by-find-in-set-and-then-and-then


編修 2010-01-09 14:21:49

END

你可能感興趣的文章

[Mysql] 使用索引來加速搜尋 只要是常常用到搜索條件的欄位,就應該把它設成索引鍵,有無設定的速度差可能會好幾倍

[Mysql] 建立叢集式資料庫1/4 -- 安裝及設定DB1 使用galera建立Mysql的叢集式資料庫 (GALERA CLUSTER FOR MYSQL THE TRUE MULTI-MASTER)

[Mysql] 資料型態int, float, double, text, char, varchar, blob大小 Mysql中資料型態int, float, text, char, varchar, blob大小

[Mysql] 使用union合併兩個表 mysql合併兩個表的方法,使用union

group by的語法在mysql升級後後就不正常了,怎麼回事? ONLY_FULL_GROUP_BY這個變數是怎樣,讓我原本可以用的語法失效了?

[phpmyadmin] 登錄超時 (1440 秒未操作),請重新登錄 phpmyadmin登錄超時 (1440 秒未操作),請重新登錄的問題,該如何解決?

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

HP SAS硬碟leds燈號說明 HP SAS硬碟leds燈號(hp g7/g6系統適用)說明

[札記] 2016.7~12月札記 札記,只是札記

[Win7] 燒錄 iso 檔 在Windows7 中內建燒錄程式,可以直接把檔案拉到光碟機裡,再執行燒錄。

[CodeIgniter3] 解決無法上傳特定檔案(.sb2)的問題 上傳時出現The filetype you are attempting to upload is not allowed,要怎麼解決?

[JAVA] JWS, JWT, JWE, JOSE是什麼? [JAVA] JWS, JWT, JWE, JOSE是什麼?非常的複雜,儘量來搞清楚..