Mysql SQL根据条件进行不同的选择
我有带有分数列的SQL表。有时该表将有数百行,有时不到10行。我需要一个SQL查询,如果表中的行少于10行,则输出前3个分数;如果表中的分数超过10行,则输出前10个分数 我不确定如何在SQL中执行此操作,但类似于以下内容: 选择 案例 当计数*小于10时 选择分数 从分数表 按分数顺序描述 限制3 当计数*>10时,则 选择分数 从分数表 按分数顺序描述 限制10 终止Mysql SQL根据条件进行不同的选择,mysql,sql,Mysql,Sql,我有带有分数列的SQL表。有时该表将有数百行,有时不到10行。我需要一个SQL查询,如果表中的行少于10行,则输出前3个分数;如果表中的分数超过10行,则输出前10个分数 我不确定如何在SQL中执行此操作,但类似于以下内容: 选择 案例 当计数*小于10时 选择分数 从分数表 按分数顺序描述 限制3 当计数*>10时,则 选择分数 从分数表 按分数顺序描述 限制10 终止 上述内容不起作用,但希望它能传达出我想要得到的东西。我想这正是你想要的: ( SELECT `score` FROM `
上述内容不起作用,但希望它能传达出我想要得到的东西。我想这正是你想要的:
(
SELECT `score`
FROM `scores_table`
ORDER BY `score` DESC
LIMIT 3
)
UNION ALL
(
SELECT `score`
FROM `scores_table`
WHERE (SELECT COUNT(*) FROM `scores_table`) >= 10
ORDER BY `score` DESC
LIMIT 2, 7
)
我想这正是你想要的:
(
SELECT `score`
FROM `scores_table`
ORDER BY `score` DESC
LIMIT 3
)
UNION ALL
(
SELECT `score`
FROM `scores_table`
WHERE (SELECT COUNT(*) FROM `scores_table`) >= 10
ORDER BY `score` DESC
LIMIT 2, 7
)
试试这个查询
SELECT `score`
FROM `scores_table`
WHERE COUNT(*) <= 10
ORDER BY `score` DESC
TOP 3
UNION
SELECT `score`
FROM `scores_table`
WHERE COUNT(*) < 10
ORDER BY `score` DESC
TOP 10
试试这个查询
SELECT `score`
FROM `scores_table`
WHERE COUNT(*) <= 10
ORDER BY `score` DESC
TOP 3
UNION
SELECT `score`
FROM `scores_table`
WHERE COUNT(*) < 10
ORDER BY `score` DESC
TOP 10
这个问题很有趣 当您选择标记MySQL时,您可能不会直接对我提出的答案感兴趣,但是有一天可能会有人发现它很有用 我看到的另外两个答案的问题是,它们使用的是LIMIT或TOP,而不是SQL。以下查询仅使用标准SQL。其思想是首先获取第三和第十个分数,然后获取分数表中分数高于其中一个的每一行 使用RNscore,rn为 选择分数,按分数描述排序上的行数 从分数 , 界限为 选择minscore 来自RN 其中rn为3,10 选择分数* 从分数 分数上的内部联接界限>=界限 按分数顺序描述;
SQL小提琴:这个问题很有趣 当您选择标记MySQL时,您可能不会直接对我提出的答案感兴趣,但是有一天可能会有人发现它很有用 我看到的另外两个答案的问题是,它们使用的是LIMIT或TOP,而不是SQL。以下查询仅使用标准SQL。其思想是首先获取第三和第十个分数,然后获取分数表中分数高于其中一个的每一行 使用RNscore,rn为 选择分数,按分数描述排序上的行数 从分数 , 界限为 选择minscore 来自RN 其中rn为3,10 选择分数* 从分数 分数上的内部联接界限>=界限 按分数顺序描述;
SQL fiddle:这似乎是我想要的,但我无法让这个查询为我工作。最后一行:限制2,7有什么作用?我对SQL/MySQL非常陌生。@DavidSkarbrevik。2是从0开始的偏移量。7是行数。这似乎是我想要的,但我无法让这个查询为我工作。最后一行:限制2,7有什么作用?我对SQL/MySQL非常陌生。@DavidSkarbrevik。2是从0开始的偏移量。7是行数。我认为MySQL没有顶级关键字。。。或者,至少它对我不起作用:但如果不是这样的话,它似乎会起作用。我不认为MySQL有一个顶级关键字。。。或者,至少它对我不起作用:但如果不是这样的话,它似乎会起作用。它工作得很好,但我对SQL如此陌生,以至于它的工作方式对我来说没有多大意义。我也不知道SQL fiddle,所以感谢您提供的资源。这个功能非常好用,但我对SQL非常陌生,所以它的工作原理对我来说没有多大意义。也不知道SQL fiddle,所以感谢您提供的资源。