在我的数据库中,我有两个表,想从表中选择最高的5个值,但我只得到第一个最高值,不能得到多个值。
这是我的SQL,
SELECT * FROM table1 WHERE id=(SELECT id, MAX(num1+num2) FROM table2 limit 5)
如何获得前5个最高值?
感谢。
答案 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 )