SQL 中的最大值子查詢
在此查詢中,您尋求根據另一列的最大值檢索列的對應值。雖然您的原始方法使用 GROUP BY 語句,但它只能可靠地取得最大視訊 ID,而不是其他欄位中的相關資料。
要解決此問題,請考慮使用子查詢來識別每個類別的不同最大視訊 ID 。以下修改後的查詢遵循此方法:
SELECT * FROM videos WHERE video_id IN ( SELECT DISTINCT MAX(video_id) FROM videos GROUP BY video_category ) ORDER BY video_category ASC
在此查詢中,採用子查詢來隔離最大視訊 ID 集。然後使用該集對錶進行過濾,以檢索相應最大視訊 ID 的所有列。透過利用 IN 運算子並連接結果,此查詢可以有效地取得所需的值。
或者,您可以使用聯接操作來獲得相同的結果,如下所示:
SELECT s.video_id ,s.video_category ,s.video_url ,s.video_date ,s.video_title ,s.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
此方法利用聯接將最大視訊ID 行與視訊表中的相應行進行匹配,從而檢索每個最大視訊ID 的完整列集。這兩種解決方案都透過捕獲與每個類別中最大視訊 ID 相關的值來有效解決該問題。
以上是如何在 SQL 子查詢中檢索最大值和關聯列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!