表结构是这样的:
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/