从SELECT查询中获取最高数字?

时间:2012-11-16 18:00:01

标签: mysql sql

想象一下,我有一组 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,但这不适用于我的架构。

5 个答案:

答案 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外部选择查询中选择它。

相关问题