Mysql SQL根据条件进行不同的选择

Mysql SQL根据条件进行不同的选择,mysql,sql,Mysql,Sql,我有带有分数列的SQL表。有时该表将有数百行,有时不到10行。我需要一个SQL查询,如果表中的行少于10行,则输出前3个分数;如果表中的分数超过10行,则输出前10个分数 我不确定如何在SQL中执行此操作,但类似于以下内容: 选择 案例 当计数*小于10时 选择分数 从分数表 按分数顺序描述 限制3 当计数*>10时,则 选择分数 从分数表 按分数顺序描述 限制10 终止 上述内容不起作用,但希望它能传达出我想要得到的东西。我想这正是你想要的: ( SELECT `score` FROM `

我有带有分数列的SQL表。有时该表将有数百行,有时不到10行。我需要一个SQL查询,如果表中的行少于10行,则输出前3个分数;如果表中的分数超过10行,则输出前10个分数

我不确定如何在SQL中执行此操作,但类似于以下内容:

选择 案例 当计数*小于10时 选择分数 从分数表 按分数顺序描述 限制3 当计数*>10时,则 选择分数 从分数表 按分数顺序描述 限制10 终止
上述内容不起作用,但希望它能传达出我想要得到的东西。

我想这正是你想要的:

(
 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,所以感谢您提供的资源。