SQL如何从表中选择最多5个值?

时间:2014-10-14 06:42:35

标签: mysql sql max

在我的数据库中,我有两个表,想从表中选择最高的5个值,但我只得到第一个最高值,不能得到多个值。

这是我的SQL,

SELECT * FROM table1 WHERE id=(SELECT id, MAX(num1+num2) FROM table2 limit 5)

如何获得前5个最高值?

感谢。

8 个答案:

答案 0 :(得分:3)

这应该这样做

SELECT id, num1 + num2 AS total FROM table1 ORDER BY num1 + num2 DESC LIMIT 5

答案 1 :(得分:1)

您需要在查询中使用IN运算符。因此,子查询必须只返回1列(这需要IN运算符工作)。

SELECT * FROM table1 WHERE id IN (SELECT id FROM table2 ORDER BY num1+num2 DESC LIMIT 5)

答案 2 :(得分:1)

你可以这样写。

 SELECT top 5 * FROM table1 WHERE id IN (SELECT id,MAX(num1+num2) FROM table2) ORDER BY id DESC

这会对你有帮助。

答案 3 :(得分:1)

您可以选择前5个记录为

Select Top 5 RestaurantID, RestaurantName,Address,ProfileImage from Restaurant_Details order by DisplayRating Desc

答案 4 :(得分:0)

取决于你的sql方言:

MySQL的:

SELECT id, num1 + num2 FROM table1 ORDER BY num1 + num2 DESC LIMIT 5

SQL Server:

SELECT TOP 5 id, num1 + num2 FROM table1 ORDER BY num1 + num2 DESC

甲骨文:

SELECT id, num1 + num2 FROM table1 WHERE ROWNUM <= 5 ORDER BY num1 + num2

答案 5 :(得分:0)

使用join代替

select * from  table1 as t1 , 
table2 as t2 
where t1.id = t2.id 
order by t2.id desc limit 5 ;

答案 6 :(得分:0)

您需要在查询中使用IN运算符。因此,子查询必须只返回1列

 SELECT * FROM table1 WHERE id IN (SELECT MAX(num1+num2) FROM table2) ORDER BY id DESC limit 5

答案 7 :(得分:0)

请记住,MAX()是一个聚合函数,当你把它放在字段列表中时,你只会得到一行作为响应。

您在内部查询中使用ORDER BY和LIMIT最多获取5个值(table2可能更小):

SELECT id FROM table2 ORDER BY num1+num2 DESC LIMIT 5

然后用IN(...)

选择包装该查询的其他信息
SELECT * FROM table1 WHERE id IN ( SELECT id, num1+num2 FROM table2 ORDER BY num1+num2 LIMIT 5 )