我读过很多关于只获取左连接的第一行的帖子,但是,出于某种原因,这对我来说并不适用.

这是我的 struct (当然简化了)

Feeds

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

Artists

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_艺术家,但这已经不起作用了.

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

也try 了一些外部应用的东西——也没有成功.

解决方案:

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'

推荐答案

@马特·道奇的回答让我走上了正确的道路.再次感谢所有的答案,同时也帮助了很多人.让它像这样工作:

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'

Mysql相关问答推荐

AWS RDS上的MySQL复制错误:超级权限或REPLICATION_SLAVE_ADMIN权限的访问被拒绝

了解查询中ORDER BY的行为

MySQL 运行自动脚本

"Shelf服务器容器访问MySQL Docker容器时出现SocketException异常"

在带有 D.I 的 .NET AWS Lambda 中使用 MySql.Data

如何找到每个user_id每个产品的买家类型数量?

MySQL 可以用于将列表排序为三分之三吗?

使用索引进行查询优化

「已解决」MySQL 连接在 vb6 上出现运行时错误 -2147467259 (80004005),但在 VBA Excel 上工作

为什么没有创建此触发器?

将sql查询转换为sequelize

从三个不同的表中生成两列,并使用分组变量计算这些列的比率

在表中找到最大值,然后分别显示SQL组和每个SQL组中的最大值计数

相关查询 - 在派生表中,我可以有多个嵌套级别吗?

使用 JOIN 计算列中的所有值

基于两个单元格值的 SQL 过滤表

授予用户对 MySQL 中有限数量表的访问权限

用于国际和多语言目的的数据库建模

让 MySQL 在 OSX 10.7 Lion 上运行

我可以在 PHP 中使用 PDO 创建数据库吗?