1. ホーム
  2. mysql

[解決済み] 別の列のMAX値に対応する列の値を取得するSQLクエリ?

2023-04-04 07:44:12

質問

OK、これは私の質問です。

SELECT
  video_category,
  video_url,
  video_date,
  video_title,
  short_description,
  MAX(video_id) 
FROM
  videos
GROUP BY
  video_category

データを引き出すと、video_idについては正しい行が得られるのですが、その他については各カテゴリーの最初の行が引き出されます。そのため、カテゴリ 1 の video_id に対して最大結果を取得すると、最大 ID が取得されますが、url、日付、タイトル、説明については、テーブルの最初の行が取得されます。

どうすれば、max IDの結果に対応する他の列を引っ張ってこさせることができるでしょうか?

編集:修正しました。

SELECT
    *
FROM
    videos
WHERE
    video_id IN
    (
        SELECT
            DISTINCT
            MAX(video_id)
        FROM
            videos
        GROUP BY
            video_category
    ) 
ORDER BY
    video_category ASC

どのように解決するのですか?

私なら、このようにします。

SELECT
   s.video_id
   ,s.video_category
   ,s.video_url
   ,s.video_date
   ,s.video_title
   ,short_description
FROM videos s
   JOIN (SELECT MAX(video_id) AS id FROM videos GROUP BY video_category) max
      ON s.video_id = max.id

これは、あなた自身のソリューションよりもかなり高速です。