mysql一個表存儲另外一個表得多個id集合,如何關聯查詢


例如表student

 表teacher

 1、正如圖所示,表student中得表中得teacher_id對應的是表teacher中的id集合,如何把這這兩張表連起來搞得人頭大,先是用了 LOCATE()

sql語句如下:select s.id,s.name,t.name as teacher from student as s left join teacher as t on LOCATE(t.id,s.teacher_id)>0

結果如下:  看似沒有問題,但是實際上它是一個模糊匹配字符串,如果表數據變成這樣就會出問題:

 

例如表student:

  

 

 teacher:

 

 繼續執行下上面那條sql語句:select s.id,s.name,t.name as teacher from student as s left join teacher as t on LOCATE(t.id,s.teacher_id)>0

執行結果:

 

實際上大家都沒有 1號張三老師,這是因為把它當成了模糊匹配 “12”,“13”中都包含了字符串“1”所以就匹配上去了,很明顯達不到我們的業務要求。

2、最后查找發現了FIND_IN_SET()這個函數,模擬上面的兩種情況執行下面這條語句

sql:select s.id,s.name,t.name as teacher from student as s left join teacher as t on FIND_IN_SET(t.id,s.teacher_id)

 第一種情況的執行結果:

  

 

第二種情況的執行結果:

  

 

 正好完美符合了我們的要求。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM