我有四张桌子如下所示。

我想以以下方式找到一个以25条记录为限的批发结果集:
目前正在使用两个查询和使用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
); 重点是,我不能把批发结果限制在25条记录之内。我应该对每个查询使用限制。是否有方法将其合并成一个查询,以便将批发量结果集限制为25?
注意: PL/SQL和CTE在我的开发系统中不可用,因此无法使用。
发布于 2016-01-14 22:14:22
问题1:如果没有LIMIT来指示哪一个25,那么ORDER BY就有点毫无意义了。
问题2:不要说x=null,它不会像你想的那样做。相反,请执行x IS NULL。
问题3:你真的想要一个“交叉连接”吗?也就是说,没有ON子句的联接,从而获得两个表的所有组合?
问题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;https://dba.stackexchange.com/questions/126257
复制相似问题