1. 程式人生 > 其它 >sql巢狀查詢出現型別問題

sql巢狀查詢出現型別問題

技術標籤:mysql資料庫字串mysqlsql

sql巢狀查詢出現型別問題

很久沒有寫博文了 這篇博文應該是參加工作最後的第一篇文章了 說來在深圳工作也有半年了 工資也不算高 但是工作也算輕鬆 加班也最很少 還能夠雙休有大把的時間去做自己想做的事最不斷提升自己最才是更重要的 每天雖然工作但是每天晚上也會一直堅持跑步來鍛鍊身體 就是 要耗費 大量的腦力 還沒談戀愛頭髮掉的差不多了快禿頂了 都不敢熬夜了 準備去醫院加檢查或者花錢去植髮了
這篇博文記錄最近使用node.js寫api 在寫資料庫查詢語句時出現的一點小問題 希望能讓遇到相同問題的人避坑

--通過select語句查詢ids
select ids FROM role WHERE rid = 20

在這裡插入圖片描述

--通過巢狀查詢
SELECT * FROM cate WHERE cid in (1,2,3,4,5,6)

在這裡插入圖片描述

--將兩條sql語句巢狀到一起查詢
SELECT * FROM cate WHERE cid in (select ids FROM role WHERE rid = 10)

在這裡插入圖片描述

出現問題:只能查詢到一條記錄,而通過上面的關聯查詢語句可以查詢到6條記錄

解決方法:因為資料表中idss欄位型別為varchar,使用in進巢狀有in的限制條件,in中可以寫數字或者字串,如果表中id為字串型別,則in中的id要用單引號引,如果表中id為int型別,則in中可以加單引號可以不加

如果為varchar型別,在mysql中需要使用 FIND_IN_SET(str,strlist)函式

--使用FIND_IN_SET(str,strlist)函式進行巢狀查詢
SELECT * FROM cate WHERE FIND_IN_SET(cid, (select ids FROM role WHERE rid = 20))

在這裡插入圖片描述