麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

完美解決mysql in條件語句只讀取一條信息問題的2種方案

2024-07-25 19:08:15
字體:
供稿:網(wǎng)友

今天同事在編寫MYSQL查詢語句時遇到一個很奇怪的問題,使用mysql多表查詢,一個表中的某個字段作為另一表的in查詢條件,只能讀取一條信息,而直接用數(shù)字的話可以正常讀取

SQL語句如下:

select a.id,a.title,b.idlist,b.aid from table a,table2 b where a.id in(b.idlist) and b.aid=2

table2表中的idlist字段是varchar類型,保存table表中的多個id信息即1,2,3,4

用上面的語句可以正常查詢但只能查詢到一條信息但是用下面的語句的話卻可以正常讀取

select a.id,a.title,b.idlist,b.aid from table a,table2 b where a.id in(1,2,3,4) and b.aid=2

很奇怪的問題,開始以為是數(shù)據(jù)類型的問題,但要保存成1,2,3,4這種格式的數(shù)據(jù)只能用字符類型,想了很多辦法都沒有解決問題,直到查到MYSQL中的FIND_IN_SET()函數(shù),下面是關(guān)于FIND_IN_SET()函數(shù)的基本介紹說明

語法:FIND_IN_SET(str,strlist)

定義:

1. 假如字符串str在由N子鏈組成的字符串列表strlist中,則返回值的范圍在1到N之間。

2. 一個字符串列表就是一個由一些被‘,'符號分開的自鏈組成的字符串。

3. 如果第一個參數(shù)是一個常數(shù)字符串,而第二個是typeSET列,則FIND_IN_SET()函數(shù)被優(yōu)化,使用比特計算。

4. 如果str不在strlist或strlist為空字符串,則返回值為0。

5. 如任意一個參數(shù)為NULL,則返回值為NULL。這個函數(shù)在第一個參數(shù)包含一個逗號(‘,')時將無法正常運行。

strlist:一個由英文逗號“,”鏈接的字符串,例如:"a,b,c,d",該字符串形式上類似于SET類型的值被逗號給鏈接起來。

示例:SELECT FIND_IN_SET('b','a,b,c,d'); //返回值為2,即第2個值

好了,先試試能不能用,把原SQL語句修改成

select a.id,a.title,b.idlist,b.aid from table a,table2 b where FIND_IN_SET(a.id,b.idlist) and b.aid=2

執(zhí)行一下修改后的語句,終于可以正常讀取了,分析一下原因,最終還是因為數(shù)據(jù)類型的問題,我們直接in(b.idlist)時,讀取的b.idlist是字符類型,而in只接受數(shù)字,雖說都帶有“,”號但實際上是完全不同的.

好了問題解決了,如果還想知道更多關(guān)于FIND_IN_SET()函數(shù)的使用方法,可以看一下頁面的相關(guān)文章


注:相關(guān)教程知識閱讀請移步到MYSQL教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美××××黑人××性爽 | 国产午夜精品理论片a级探花 | 懂色粉嫩av久婷啪 | 亚洲二区不卡 | 久久精品一区二区三区国产主播 | 国产一区二区三区高清 | 成人三区四区 | 欧洲成人一区 | 日韩美香港a一级毛片 | 欧美a级一区二区 | 久久综合伊人 | 性大片1000免费看 | 久草在线观看资源 | 久久影院午夜 | 全黄毛片 | 欧美在线成人影院 | 日本在线视 | 欧美大胆xxxx肉体摄影 | 成人毛片免费在线 | 在线成人一区二区 | 久久久三级免费电影 | 海外中文字幕在线观看 | 久久影院免费观看 | 亚洲午夜久久久久 | 欧美 日韩 国产 在线 | 国产一区二精品区在线 | 亚洲成人精品久久 | 欧美一区高清 | 亚洲少妇诱惑 | 中文字幕在线免费看 | 视频一区二区精品 | 91久久久久久久久久久久久 | 免费黄色入口 | 一级片999| 成年人国产视频 | 羞羞答答视频 | 成人在线高清视频 | 中国女人内谢69xxxx天美 | 免费亚洲视频在线观看 | 鲁丝片一区二区三区免费入口 | a集毛片|