mysql中in條件使用字符串方式
mysql中in條件使用字符串
場(chǎng)景
當(dāng)sql使用in作為條件時(shí),使用一個(gè)參數(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ù)為帶逗號(hào)的字符串,查詢結(jié)果錯(cuò)誤
如有以下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)為:
不可推薦 ,推銷客戶,推銷客戶
實(shí)際結(jié)果為:
不可推薦
原因:
在mysql中in里面如果是字符串的話,會(huì)自動(dòng)轉(zhuǎn)化成int類型的,內(nèi)部使用了如下方法:
CAST('4,3' AS INT)
導(dǎo)致’4,3‘ 變成了4,所以上述查詢sql結(jié)果只有第一個(gè)。
解決方案
FIND_IN_SET('查詢的值(如:1)', '使用逗號(hào)隔開的字符串集合,如:('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
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL控制流函數(shù)(-if?,elseif,else,case...when)
這篇文章主要介紹了MySQL控制流函數(shù)(-if?,elseif,else,case...when),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下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實(shí)現(xiàn)當(dāng)前數(shù)據(jù)表的所有時(shí)間都增加或減少指定的時(shí)間間隔(推薦)
這篇文章主要介紹了MySQL實(shí)現(xiàn)當(dāng)前數(shù)據(jù)表的所有時(shí)間都增加或減少指定的時(shí)間間隔,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02Linux下mysql新建賬號(hào)及權(quán)限設(shè)置方法
Linux下mysql新建賬號(hào)及權(quán)限設(shè)置方法,其實(shí)linux與windows下的設(shè)置方法一樣的,都是命令行操作2012-07-07Mysql技術(shù)內(nèi)幕之InnoDB鎖的深入講解
這篇文章主要給大家介紹了關(guān)于Mysql技術(shù)內(nèi)幕之InnoDB鎖的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12MySQL創(chuàng)建和刪除數(shù)據(jù)庫(kù)的命令及相關(guān)PHP腳本的操作方法
這篇文章主要介紹了MySQL創(chuàng)建和刪除數(shù)據(jù)庫(kù)的命令及相關(guān)PHP腳本的操作方法,這里主要講述Linux中在mysqladmin下的命令操作,需要的朋友可以參考下2015-11-11MYSQL優(yōu)化之?dāng)?shù)據(jù)表碎片整理詳解
在日常的數(shù)據(jù)庫(kù)維護(hù)中,在給客戶制定維護(hù)方案時(shí),都會(huì)有降低高水位此類的建議 建議每年年終定期做數(shù)據(jù)整理,下面這篇文章主要給大家介紹了關(guān)于MYSQL優(yōu)化之?dāng)?shù)據(jù)表碎片整理的相關(guān)資料,需要的朋友可以參考下2022-04-04mysql數(shù)據(jù)庫(kù)mysql: [ERROR] unknown option ''--skip-grant-tables'
這篇文章主要介紹了mysql數(shù)據(jù)庫(kù)mysql: [ERROR] unknown option '--skip-grant-tables',需要的朋友可以參考下2020-03-03