gpt4 book ai didi

mysql - 带有一些 JOINS 的 MIN 和 MAX

转载 作者:行者123 更新时间:2023-11-29 17:39:17 25 4
gpt4 key购买 nike

我正在尝试显示 MIN 和 MAX,同时加入几个表以获取它们的信息。我得到了最小值和最大值,但它显示了我的其他字段的错误信息。

SELECT
SONG.SONG_NAME,
ALBUM.ALBUM_NAME,
ARTIST.ARTIST_NAME,
MAX(SONG.LENGTH_SECONDS) AS LENGTH
FROM SONG
JOIN ALBUM ON ALBUM.ALBUM_ID = SONG.ALBUM_ID
JOIN ARTIST ON ARTIST.ARTIST_ID = SONG.ARTIST_ID
UNION
SELECT
SONG.SONG_NAME,
ALBUM.ALBUM_NAME,
ARTIST.ARTIST_NAME,
MIN(SONG.LENGTH_SECONDS)
FROM SONG
JOIN ALBUM ON ALBUM.ALBUM_ID = SONG.ALBUM_ID
JOIN ARTIST ON ARTIST.ARTIST_ID = SONG.ARTIST_ID;

这些是我通过查询得到的结果:

| SONG_NAME              | ALBUM_NAME                | ARTIST_NAME    | LENGTH |
+------------------------+---------------------------+----------------+--------+
| Fluorescent Adolescent | Favourite Worst Nightmare | Arctic Monkeys | 390 |
| Fluorescent Adolescent | Favourite Worst Nightmare | Arctic Monkeys | 177 |

最佳答案

您可以从 SELECT 中删除 MAX 和 MIN,并添加 TOP 1。然后添加 ORDER BY SONG.LENGTH_SECONDS 以获取最短的歌曲,并添加 ORDER BY SONG.LENGTH_SECONDS DESC 以获取最长的歌曲。

SELECT TOP 1
SONG.SONG_NAME,
ALBUM.ALBUM_NAME,
ARTIST.ARTIST_NAME,
SONG.LENGTH_SECONDS AS LENGTH
FROM SONG
JOIN ALBUM ON ALBUM.ALBUM_ID = SONG.ALBUM_ID
JOIN ARTIST ON ARTIST.ARTIST_ID = SONG.ARTIST_ID
ORDER BY SONG.LENGTH_SECONDS DESC
UNION
SELECT TOP 1
SONG.SONG_NAME,
ALBUM.ALBUM_NAME,
ARTIST.ARTIST_NAME,
SONG.LENGTH_SECONDS AS LENGTH
FROM SONG
JOIN ALBUM ON ALBUM.ALBUM_ID = SONG.ALBUM_ID
JOIN ARTIST ON ARTIST.ARTIST_ID = SONG.ARTIST_ID;
ORDER BY SONG.LENGTH_SECONDS

关于mysql - 带有一些 JOINS 的 MIN 和 MAX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50083838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com