mysql - 如何使用MYSQL获取关系表中的最大值

标签 mysql sql database

表结构是这样的:

Video
-------
id
source_low
source_med
source_high

Source
--------
id
duration

视频项可以包含一个或多个源。这意味着,至少有 1 个源,source_low、med、high 等。或者最多有 3 个源。我想在三个来源之间获得最长的持续时间。

现在我可以通过加入表来获取值,但是如何获取每个视频的最大持续时间?

SELECT video
JOIN SOURCE ON video.source_low = SOURCE.id
JOIN SOURCE ON video.source_med = SOURCE.id
JOIN SOURCE ON video.source_high = SOURCE.id

最佳答案

您可以使用单个连接语句(它可以将多行 source 行匹配到单个 video,然后使用 max 来获取最长持续时间:

SELECT   v.id, MAX(duration)
FROM     video v
JOIN     source s ON s.id IN (v.source_low, v.source_med, v.source_high)
GROUP BY v.id

关于mysql - 如何使用MYSQL获取关系表中的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31376871/

相关文章:

javascript - Google 条形图 - 如何使用 JSON 为每个条目获取 2 个不同的条形图

php - 当条件相同时,如何对多列使用一次 CASE 语句?

sql - 如何轻松地将列添加到临时表?

database - Swift - 在 View 之间花费大量数据 : create objects in the first view or connectar several times in the database?

database - 分组依据 - 多个条件 - MySQL

MySQL获取值并汇总

mysql - 如何将 MySQL 触发器异常/失败信息存储到表或变量中

mysql - 将一个表中的信息加入到另外两个表的 UNION 中......这可能吗?

mysql - SQL多个外键指向同一个主键

php - mysql 如果存在则更新,否则当我没有唯一 key 时更新