Mysql
連接 4 個表,其中一個不相關
我想通過以下方式找到一個限制為 25 條記錄的整數結果集:
- 表 1 中基於條件的使用者
- 那些使用者不應該在表 2 中$$ Non restricted users $$
- 將這些記錄加入 Table3 上的 Table1.Group_id = Table3.Group_MEMBER_ID 其中 Table3.GroupName = ‘someValue’
- 在 Table1.UserName = Table4.UserName 上加入 Table1 和 Table4
我目前正在使用兩個查詢並且正在使用 UNION。像這樣的東西:
( SELECT Table_4.DeviceName from Table1 left join Table2 on Table1.UserName = Table2.UserName inner join Table4 on Table1.UserName = Table4.UserName where Table1.some_column = 'someValue' and Table2.UserName = null limit 25 ) UNION ( SELECT Table4.DeviceName from Table1 inner join on Table1.Group_ID = Table3.GROUP_MEMBER_ID inner join Table4 Table1.UserName = Table4.UserName where Table3.GroupName='someValue' and Table1.some_column = 'someValue' limit 25 );
關鍵是,我不能將 Wholesum 結果集限制為 25 條記錄。我應該對每個查詢使用 LIMIT。有沒有辦法將它合併到一個查詢中,以便我可以將整個結果集限制為 25?
注意:PL/SQL 和 CTE 在我的開發系統中不可用,因此無法使用。
問題1:
LIMIT
不ORDER BY
指明是哪個25有點意思。問題2:不要說
x=null
,它不會像你想的那樣做。而是做x IS NULL
.問題 3:您真的想要“交叉連接”嗎?也就是說,沒有 ON 子句的 JOIN,因此得到兩個表的所有組合?
問題 4:嗯,我沒有檢查你所擁有的其餘部分。
回到你的問題……模式是
( SELECT ... ORDER BY ... LIMIT 25 ) UNION ALL -- or DISTINCT, depending on your understanding of the data ( SELECT ... ORDER BY ... LIMIT 25 ) ORDER BY ... -- Yes, again LIMIT 25;
如果你需要一個偏移量,比如 100,那麼:
( ... LIMIT 125 ) UNION ... ( ... LIMIT 125 ) ORDER BY ... LIMIT 100, 25;