gpt4 book ai didi

mysql - LEFT JOIN 仅第一行

转载 作者:IT老高 更新时间:2023-10-28 12:50:15 24 4
gpt4 key购买 nike

我阅读了很多关于只获取左连接的第一行的帖子,但由于某种原因,这对我不起作用。

这是我的结构(当然是简化的)

供稿

id |  title | content
----------------------
1 | Feed 1 | ...

艺术家

artist_id | artist_name
-----------------------
1 | Artist 1
2 | Artist 2

feeds_artists

rel_id | artist_id | feed_id
----------------------------
1 | 1 | 1
2 | 2 | 1
...

现在我想获取文章并只加入第一个艺术家,我想到了这样的事情:

SELECT *
FROM feeds
LEFT JOIN feeds_artists ON wp_feeds.id = (
SELECT feeds_artists.feed_id FROM feeds_artists
WHERE feeds_artists.feed_id = feeds.id
LIMIT 1
)
WHERE feeds.id = '13815'

只是为了只获取 feeds_artists 的第一行,但这已经不起作用了。

由于我的数据库,我无法使用 TOP 并且我无法按 feeds_artists.artist_id 对结果进行分组,因为我需要按日期对它们进行排序(我得到了结果通过这种方式对它们进行分组,但结果不是最新的)

用 OUTER APPLY 也试过了——也没有成功。老实说,我真的无法想象这些行中发生了什么——这可能是我无法让它工作的最大原因。

解决方案:

SELECT *
FROM feeds f
LEFT JOIN artists a ON a.artist_id = (
SELECT artist_id
FROM feeds_artists fa
WHERE fa.feed_id = f.id
LIMIT 1
)
WHERE f.id = '13815'

最佳答案

如果您可以假设艺术家 ID 随时间增加,那么 MIN(artist_id) 将是最早的。

所以试试这样的东西(未经测试...)

SELECT *
FROM feeds f
LEFT JOIN artists a ON a.artist_id = (
SELECT
MIN(fa.artist_id) a_id
FROM feeds_artists fa
WHERE fa.feed_id = f.feed_id
) a

关于mysql - LEFT JOIN 仅第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15626493/

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