欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2018年04月02日 10:54:38   投稿:wdc  
使用mysql多表查詢時(shí)一個(gè)表中的某個(gè)字段作為另一表的in查詢條件,只能讀取一條信息,而直接用數(shù)字的話可以正常讀取

今天同事在編寫MYSQL查詢語句時(shí)遇到一個(gè)很奇怪的問題,使用mysql多表查詢,一個(gè)表中的某個(gè)字段作為另一表的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表中的多個(gè)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. 一個(gè)字符串列表就是一個(gè)由一些被‘,'符號(hào)分開的自鏈組成的字符串。

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

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

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

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

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

好了,先試試能不能用,把原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í)行一下修改后的語句,終于可以正常讀取了,分析一下原因,最終還是因?yàn)閿?shù)據(jù)類型的問題,我們直接in(b.idlist)時(shí),讀取的b.idlist是字符類型,而in只接受數(shù)字,雖說都帶有“,”號(hào)但實(shí)際上是完全不同的.

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

相關(guān)文章

  • sqlite3遷移mysql可能遇到的問題集合

    sqlite3遷移mysql可能遇到的問題集合

    這篇文章主要給大家介紹了關(guān)于sqlite3遷移mysql可能遇到的問題集合,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • mysql啟動(dòng)時(shí)出現(xiàn)ERROR 2003 (HY000)問題的解決方法

    mysql啟動(dòng)時(shí)出現(xiàn)ERROR 2003 (HY000)問題的解決方法

    這篇文章主要為大家詳細(xì)介紹了mysql啟動(dòng)時(shí)出現(xiàn)ERROR 2003 (HY000問題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • MySql命令實(shí)例匯總

    MySql命令實(shí)例匯總

    這篇文章主要介紹了MySql命令,結(jié)合實(shí)例分析了MySQL數(shù)據(jù)庫的創(chuàng)建、連接及增刪改查等各種常用操作的使用方法與相關(guān)注意事項(xiàng),非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-11-11
  • mysql解決時(shí)區(qū)相關(guān)問題

    mysql解決時(shí)區(qū)相關(guān)問題

    這篇文章主要介紹了mysql如何解決時(shí)區(qū)相關(guān)問題,本篇文章將從數(shù)據(jù)庫參數(shù)入手,逐步介紹時(shí)區(qū)相關(guān)內(nèi)容。感興趣的朋友可以了解下
    2020-08-08
  • 一臺(tái)服務(wù)器部署兩個(gè)獨(dú)立的mysql數(shù)據(jù)庫操作實(shí)例

    一臺(tái)服務(wù)器部署兩個(gè)獨(dú)立的mysql數(shù)據(jù)庫操作實(shí)例

    這篇文章主要給大家介紹了關(guān)于一臺(tái)服務(wù)器部署兩個(gè)獨(dú)立的mysql數(shù)據(jù)庫的相關(guān)資料,同一臺(tái)服務(wù)器裝兩個(gè)數(shù)據(jù)庫,可以通過虛擬化技術(shù)實(shí)現(xiàn),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • 徹底搞懂MySQL存儲(chǔ)過程和函數(shù)

    徹底搞懂MySQL存儲(chǔ)過程和函數(shù)

    我們大家都知道MySQL 存儲(chǔ)過程是從 MySQL 5.0 開始逐漸增加新的功能,下面這篇文章主要給大家介紹了關(guān)于MySQL存儲(chǔ)過程和函數(shù)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • MySQL查詢數(shù)據(jù)(單表查詢)詳解

    MySQL查詢數(shù)據(jù)(單表查詢)詳解

    這篇文章主要介紹了MySQL查詢數(shù)據(jù)(單表查詢)的相關(guān)知識(shí),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • MySQL窗口函數(shù)的具體使用

    MySQL窗口函數(shù)的具體使用

    本文主要介紹了MySQL窗口函數(shù)的具體使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 利用frm和ibd文件恢復(fù)mysql表數(shù)據(jù)的詳細(xì)過程

    利用frm和ibd文件恢復(fù)mysql表數(shù)據(jù)的詳細(xì)過程

    總是遇到mysql服務(wù)意外斷開之后導(dǎo)致mysql服務(wù)無法正常運(yùn)行的情況,使用Navicat工具查看能夠看到里面的庫和表,但是無法獲取數(shù)據(jù)記錄,提示數(shù)據(jù)表不存在,所以本文給大家介紹了利用frm和ibd文件恢復(fù)mysql表數(shù)據(jù)的詳細(xì)過程,需要的朋友可以參考下
    2024-04-04
  • MySql允許遠(yuǎn)程連接如何實(shí)現(xiàn)該功能

    MySql允許遠(yuǎn)程連接如何實(shí)現(xiàn)該功能

    這篇文章主要介紹了 MySql允許遠(yuǎn)程連接如何實(shí)現(xiàn)該功能的相關(guān)資料,需要的朋友可以參考下
    2017-02-02

最新評(píng)論