gpt4 book ai didi

sql - 连接表以对另一个表进行子查询,然后对结果进行排序

转载 作者:搜寻专家 更新时间:2023-10-30 23:15:55 24 4
gpt4 key购买 nike

我是新来的,如果能帮助我解决一整天都在努力解决的问题,我将不胜感激。

考虑这两个表:

         albums (pkey: id)    years (pkey: album_id, year)

id genre_id album_id year
--- -------- -------- ----
450 1 450 2000
451 1 450 2001
452 1 450 2002
453 2 451 2005
454 3 451 2012
452 1998

这可能看起来很奇怪,但请假设一张专辑可以与多个年份相关联。

我想选择流派 1 中的所有专辑,并按每张专辑的最新年份排序。 (假设可以按年份排序)。

所以,我想要这个结果:

 id    year
----- ----
451 2012
450 2002
452 1998

这就是我在...

显然,我需要在对结果排序之前加入表:

SELECT      id, year
FROM albums INNER JOIN years ON albums.id = years.album_id
WHERE genre_id = 1
ORDER BY year;

这将为流派 1 中的每张专辑选择每年的记录,而不是仅为流派 1 中的每张专辑的最近一年的记录。

不知何故,我需要像这样合并一个子查询,以将加入专辑表的年份限制为该专辑的最新年份,然后再次排序:

SELECT year FROM years WHERE album_id = ??? ORDER BY year DESC LIMIT 1;

最佳答案

SELECT   album_id, max(year) latest
FROM albums INNER JOIN years ON id = album_id
WHERE genre_id = 1
GROUP BY album_id
ORDER BY latest DESC

关于sql - 连接表以对另一个表进行子查询,然后对结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13792327/

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