想象一下,我有一组 30条记录 例如
users : {user_id, name, category}
我做了这个查询:
SELECT name
FROM users
WHERE category = "Student"
AND id < 30
ORDER BY user_id
LIMIT 5
这会给我id为1到5的用户 但如果我想获得小于30的最高id值怎么样 在这种情况下,期望的结果将是24-29的id。
PS。我真正的问题比这更复杂,我只想得到基本理论。 还要注意我会用另一个AND子句来表示&gt; 23,但这不适用于我的架构。
答案 0 :(得分:1)
您可以按降序对同一查询的结果进行排序:
SELECT name
FROM users
WHERE category = "Student"
AND id < 30
ORDER BY user_id DESC
LIMIT 5
这将返回最大的五个ID。虽然可能值得详细说明你实际想要完成的事情。有关ID列排序的问题有点可疑。 :)
答案 1 :(得分:0)
试试这个:
SELECT name
FROM users
WHERE category = "Student"
AND id < 30
ORDER BY user_id
LIMIT 25,5
答案 2 :(得分:0)
你可以将Dan J写入集合并从中包含SELECT,然后应用ASC订单。不确定MySQL语法,但在MS SQL中它将是:
SELECT * FROM
(Dan J's code) a
ORDER BY user_id [ASC]
ASC是可选的。
答案 3 :(得分:0)
您可以尝试子查询:
SELECT name
FROM users
WHERE category = "Student" AND
id >((SELECT MAX(id) FROM users)-5) AS temp
ORDER BY user_id
LIMIT 5
根据您的表格结构,您可以将category = "Student"
移动到子查询。
答案 4 :(得分:0)
你指的是这样的逻辑吗? * On SQLFiddle
SELECT * FROM
(SELECT quiz_name
FROM cursos
WHERE id < (select max(id) from cursos)
ORDER BY ID DESC
LIMIT 5) ) tbl
ORDER BY id ASC
从表中获取MAX行ID并获得最高的5个ID值。例如。 MAX = 9,它给你8,7,6,5,4。编辑:添加ASC外部选择顺序后,你得到4,5,6,7,8。
PS:忽略我的表架构,这是我刚用于此示例的旧架构。
编辑版本 - 抱歉我的网络已关闭。
您确实应该使用Sebt提到的嵌套SELECT包。但是,您需要在嵌套选择中包含ID,因此您可以从tbl外部选择查询中选择它。