0

mySQL DB 内の私のデータは次のようになります (ただし、この 4 人だけでなく、複数回登場している人物が多数いますが、資格と変更日が異なります

データベースにあるデータ

選択は次のようになります。

SELECT * FROM table where person_id=1 GROUP BY person_id

したがって、この選択を行い、person_id でグループ化すると、次のようになります。

グループを選択した後の私の結果

個人IDでグループ化する可能性はありますか? person_id通常、where SQLステートメントにはありません。
だから私は私の選択からすべての人が欲しいのですが、最後に変更された資格の結果だけが
必要です(問題が何であるかを理解できるように十分に説明したいと思います)

(もちろん、私の選択は、私が示したものよりもはるかに複雑です。これは、私が何をしているかを示すためのものです)

4

3 に答える 3

3

サブクエリを使用しmaxてそれぞれの変更日を返し、person_idその結果をテーブルに結合して最大日付の行を取得することもできます。

select t1.id, 
  t1.person_id,
  t1.name,
  t1.qualification,
  t1.created,
  t1.modified,
  t1.version
from yourtable t1
inner join
(
  select person_id, max(modified) MaxMod
  from yourtable
  group by person_id
) t2
  on t1.person_id = t2.person_d
  and t1.modified = t2.maxmod
于 2013-04-19T10:25:08.660 に答える
0

特定の人の最後に変更されたエントリが必要な場合は、次のようにします

select * from table
where person_id = 1
order by modified desc
limit 1
于 2013-04-19T10:19:05.560 に答える
0

編集

質問を誤解していたので、回答を更新します

これを試してください(各人の最終変更資格が必要であると仮定します ):

SELECT 
   person_id,
   qualification
FROM 
   table as a
INNER JOIN (
   SELECT 
     person_id,
     MAX(modified) as za_date
   FROM 
     table
   GROUP BY 
     person_id
) as tmp 
  ON a.person_id = tmp.person_id
  AND a.modified = tmp.za_date

すべての個人の最終変更資格が必要な場合:

SELECT
   qualification
FROM
   table
WHERE modified = (
       SELECT 
           MAX(modified)
       FROM
           table  
   )
于 2013-04-19T10:19:34.560 に答える