2017-06-04 14 views
1

でレコードを取得:MySQLの - 私は私のMySQLデータベースに以下のようなテーブルをした最大値

employee 
------------------------- 
id name num 
1  Jack 1 
2  John 1 
3  Jack 2 
4  Steve 1 
5  Jack 3 
6  Steve 2 
7  Carol 1 

私がやりたい事は、最も高い「NUM」値と名前を取得することです。例えば

:あり

5  Jack 3 

つ以上のレコードが、ジャックという名前が、私は最大の「NUM」の値を持つものを取得したいです。

私は下のクエリを使用しようとしました:

SELECT MAX(num),id,name FROM `employee` 

しかし、それは最初のレコード(最初の「ジャック」)が、最新のnum個のIDと名前を返します。もちろん

MAX(num) id  num 
----------------------- 
3   1  Jack 

私は「で注文」を使用しようとすることができますが、私はまた、最も高い値を持つのみレコードを取得します。

SELECT num,id,name FROM `employee` order by num desc 

このクエリは、小さいものも含めてすべてのレコードも返します。

id name num 
------------------------- 
3  5  Jack 
2  3  Jack 
2  6  Steve 
1  1  Jack 
1  2  John 
1  4  Steve 
1  7  Carol 

名前でグループ化しようとすると、名前でグループ化されたレコードが返されますが、再び小さなレコードのみが返されます。最初の最小レコードを

SELECT num,id,name FROM `employee` group by name order by num desc 


SELECT * FROM 
(
select * from `employee` order by num desc 
) as employee_tmp 
group by name 
order by num desc 

再び、基:

以下のクエリの両者は同じ結果を与えます。

id name num 
1 Jack 1 
2 John 1 
4 Steve 1 
7 Carol 1 

答えて

1

は単に

SELECT num,id,name FROM `employee` order by num desc LIMIT 1 

のようなクエリを編集LIMIT 1句を追加します。
OK、私はあなたの元の質問を誤解しました。以下のリストは、各最高num値の名前:

SELECT a.* FROM employee a 
INNER JOIN (
    SELECT name na, MAX(num) nu FROM employee 
    GROUP BY name) b ON na=name AND nu=num 

デモについてはこちらを参照してください:あなたがMAXと、内側のクエリを使用する必要がhttp://rextester.com/MOL28087

+0

あなたの目的を解決する必要がありますか?私はすべての人に最高の価値を求めています。 「3番のジャック」「2番のスティーブ」 – amone

+0

@amoneのように、もう一度確認してください。私の答えは更新されました。 – cars10m

0

、例えば:

SELECT * 
FROM employee 
WHERE num = (
    SELECT MAX(num) FROM employee 
); 

する。これは与えるだろうあなたは必要な結果を得る。

+0

唯一のレコードを返します。私はすべての人に最高の価値を求めています。 「num 3のJack」「num 2のSteve」 – amone

+0

ここで最も高い値は「3」です。したがって、値3のすべてのレコードを返します。 '2'は最高値ではないので、対応するレコードは返されないことに注意してください。 –

0

MAX(column_nameは)私たちは、その名の名前と最大NUMを見つけるために、内側のクエリを使用して、名前のCOLとNUMにメインテーブルに参加しているすべてのレコードの最大、

SELECT emp.* FROM `employee` emp INNER JOIN 
(SELECT name,MAX(num) as num FROM `employee` GROUP BY name) tbl 
ON emp.`name` = tbl.`name` AND emp.`num` = tbl.`num` 

を返します。 col。私たちは、それは私が考えるその名前

各NUMの名前とmaxを与えることにより、グループを言及する必要が 、これは他のレコードについて何

関連する問題