我读了很多关于只获取左连接的第一行的线程,但由于某种原因,这对我不起作用。LEFT JOIN只有第一行
这是我的结构(简化当然)
订阅
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
结果按日期对它们进行排序(我通过编组他们这样得到的结果,但结果不何处最新)
尝试了一些与外部应用 - 以及没有成功。 说实话,我真的不能想象在这些行中发生了什么 - 可能是我无法得到这个工作的最大原因。
SOLUTION:
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'
https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html – Sinux 2016-06-21 03:12:12
这里是解决方案https://stackoverflow.com/a/7588442/612987 – 2018-01-13 16:40:31