web-dev-qa-db-ja.com

SQLテーブルから最大5つの値を選択する方法

データベースに2つのテーブルがあり、テーブルから最も高い5つの値を選択したいのですが、最初に最も高い値しか取得できず、複数の値を取得できません。

これが私のSQLです、

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

最初の上位5つの最高値を取得するにはどうすればよいですか?

ありがとう。

5
gzml

これはそれをするべきです

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

このように書くことができます。

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

これはあなたを助けます。

2
Tushar Gite

上位5件のレコードを選択できます

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

クエリでIN演算子を使用する必要があります。したがって、サブクエリは1列のみを返す必要があります(これはIN演算子が機能するために必要です)。

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

代わりにjoinを使用してください

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

あなたのSQL方言に応じて:

MySQL:

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

SQLサーバー:

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

Oracle:

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

MAX()は集計関数であることを覚えておいてください。フィールドリストに入れた場合、応答として返されるのは常に1行だけです。

内部クエリで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 )
0
ManuelJE

クエリでIN演算子を使用する必要があります。したがって、サブクエリは1列のみを返す必要があります

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