mysql中in條件使用字符串方式
mysql中in條件使用字符串
場景
當sql使用in作為條件時,使用一個參數(shù)滿足查詢條件,直接傳入字符串無法滿足條件。
select id,name from user where id in(?)
方法
使用FIND_IN_SET(str,strlist)函數(shù)
select id,name from user where FIND_IN_SET(id,#{strlist})
str
: 條件字段strlist
:匹配值集合
select id,name from user where FIND_IN_SET(id,'111,22,333')
mysql查詢 in條件參數(shù)為帶逗號的字符串,查詢結(jié)果錯誤
如有以下sql:
SELECT ? ? ( ? ? ? ? SELECT ? ? ? ? ? ? GROUP_CONCAT(content) ? ? ? ? FROM ? ? ? ? ? ? account_limit_user ur ? ? ? ? WHERE ? ? ? ? ? ? ur.id IN (T1.limit_user) ? ? ? ? GROUP BY ? ? ? ? ? ? ur.id ? ? ) AS limit_user FROM ? ? account T1 WHERE ? ? 1 = 1
T1.limit_user 為account表中查詢出來的值
‘9,8,4’
查詢sql正確查詢結(jié)果應(yīng)為:
不可推薦 ,推銷客戶,推銷客戶
實際結(jié)果為:
不可推薦
原因:
在mysql中in里面如果是字符串的話,會自動轉(zhuǎn)化成int類型的,內(nèi)部使用了如下方法:
CAST('4,3' AS INT)
導致’4,3‘ 變成了4,所以上述查詢sql結(jié)果只有第一個。
解決方案
FIND_IN_SET('查詢的值(如:1)', '使用逗號隔開的字符串集合,如:('1,2,3')')
正確的sql
SELECT ? ? ( ? ? ? ? SELECT ? ? ? ? ? ? GROUP_CONCAT(content) ? ? ? ? FROM ? ? ? ? ? ? account_limit_user ur? ? ? ? ? WHERE ? ? ? ? ? ? FIND_IN_SET(ur.id, T1.limit_user) > 0 ? ? ) AS limit_user, ? ? T1.limit_user limit_userid FROM ? ? account T1 WHERE ? ? 1 = 1
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL控制流函數(shù)(-if?,elseif,else,case...when)
這篇文章主要介紹了MySQL控制流函數(shù)(-if?,elseif,else,case...when),文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下2022-07-07MySQL:Unsafe statement written to the binary log using state
這篇文章主要介紹了MySQL:Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEM,需要的朋友可以參考下2016-05-05MySQL實現(xiàn)當前數(shù)據(jù)表的所有時間都增加或減少指定的時間間隔(推薦)
這篇文章主要介紹了MySQL實現(xiàn)當前數(shù)據(jù)表的所有時間都增加或減少指定的時間間隔,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2017-02-02Linux下mysql新建賬號及權(quán)限設(shè)置方法
Linux下mysql新建賬號及權(quán)限設(shè)置方法,其實linux與windows下的設(shè)置方法一樣的,都是命令行操作2012-07-07Mysql技術(shù)內(nèi)幕之InnoDB鎖的深入講解
這篇文章主要給大家介紹了關(guān)于Mysql技術(shù)內(nèi)幕之InnoDB鎖的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-12-12MySQL創(chuàng)建和刪除數(shù)據(jù)庫的命令及相關(guān)PHP腳本的操作方法
這篇文章主要介紹了MySQL創(chuàng)建和刪除數(shù)據(jù)庫的命令及相關(guān)PHP腳本的操作方法,這里主要講述Linux中在mysqladmin下的命令操作,需要的朋友可以參考下2015-11-11MYSQL優(yōu)化之數(shù)據(jù)表碎片整理詳解
在日常的數(shù)據(jù)庫維護中,在給客戶制定維護方案時,都會有降低高水位此類的建議 建議每年年終定期做數(shù)據(jù)整理,下面這篇文章主要給大家介紹了關(guān)于MYSQL優(yōu)化之數(shù)據(jù)表碎片整理的相關(guān)資料,需要的朋友可以參考下2022-04-04mysql數(shù)據(jù)庫mysql: [ERROR] unknown option ''--skip-grant-tables'
這篇文章主要介紹了mysql數(shù)據(jù)庫mysql: [ERROR] unknown option '--skip-grant-tables',需要的朋友可以參考下2020-03-03