mysql n 1問題 mybatis n 1問題

2021-10-18 05:33:58 字數 716 閱讀 7487

mybatis的一對多或者多對多的時候,2中方式解決,一種是巢狀select,但是會有n+1問題,不推薦;另外一種是使用一條sql,在該sql裡面使用子查詢的方式來完成。比如

select * from clazz m left join student mm on m.id = mm.clazz_id where m.id in (select t.id from clazz t limit 0, 10),但是這種方式有小問題,mysql的in這種子查詢不支援帶有limit的子查詢,也就是說上面紅色部分中帶有limit,並且在in子句中,會報錯:

[err] 1235 - this version of mysql doesn't yet support 'limit & in/all/any/some subquery'

解決該問題的是在子查詢外面在套一層,如下

select * from clazz m left join student mm on m.id = mm.clazz_id where m.id in (select id from (select t.id from clazz t limit 0, 10) as id),

這樣子就解決了n+1問題。

還有另外一種寫法也可以實現:

select * from (select * from teacher t limit 0, 2) tt left join clazz ttt on tt.id = ttt.teacher_id;

執行緒問題1

func setlistview2info mesgp 0 重新整理listview2資訊,0 單執行緒 if guictrlread checkbox1 1 or guictrlread checkbox1 1 and guictrlread combo2 1 then 單執行緒準備資料 guic...

迷宮問題1

c 語言程式設計練習1 程式設計練習 編寫程式尋找迷宮路徑。入口 x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x 出口x 圖1讀取迷宮檔案 如圖1所示 不限於此迷宮 以入口為開始 出口為終點 程式設計尋找一條穿越迷宮的路...

遞迴問題1

問題是這樣的 1 乙隻青蛙一次可以跳上1級台階,也可以跳上2級求該青蛙跳上乙個n級的台階總共有多少種跳法。問題再複雜點 2 乙隻青蛙一次可以跳上1級台階,也可以跳上2級 它也可以跳上n級。求該青蛙跳上乙個n級的台階總共有多少種跳法。這個是在牛客網上做程式設計訓練時碰到的第一題和第二題,題目要求的是利...