我在桌子上有几百条记录,我需要得到最后50条记录,但我需要25个男性和25个女性.有一个性别列.我只是无法弄清楚如何进行查询.我可以得到一些帮助吗?
如果你只需要50,那么使用a UNION得到最后25个.这假设您有一些自动递增id列,该列按降序排序以检索每个性别的最新25个.
为了使用a ORDER BY和LIMITfor的各个组件UNION,MySQL期望将这些组件包含在其中().
(SELECT * FROM tbl WHERE gender='F' ORDER BY id DESC LIMIT 25)
UNION ALL
(SELECT * FROM tbl WHERE gender='M' ORDER BY id DESC LIMIT 25)
Run Code Online (Sandbox Code Playgroud)
注:顺便说一下,我用SELECT *在这里为简便起见,但你应该永远不会真的这样做的UNION查询.相反,明确列出您需要的列,并确保它们在两个部分中的顺序相同UNION.
喜欢:
(SELECT col1, col2, coln FROM tbl WHERE gender='F'....)
UNION ALL
(SELECT col1, col2, coln FROM tbl WHERE gender='M'....)
Run Code Online (Sandbox Code Playgroud)
(SELECT * FROM table WHERE gender = 'M' ORDER BY id DESC LIMIT 25)
UNION
(SELECT * FROM table WHERE gender = 'F' ORDER BY id DESC LIMIT 25)
Run Code Online (Sandbox Code Playgroud)
那我觉得可行.对于ID部分的订单,我假设您有一个自动增量ID列,使最后添加的记录具有最高ID.