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中文网其他相关文章!