LIMIT 1 inside JOIN 来自 MySQL 中的特定表?

Posted

技术标签:

【中文标题】LIMIT 1 inside JOIN 来自 MySQL 中的特定表?【英文标题】:LIMIT 1 inside JOIN from specific tables in MySQL? 【发布时间】:2011-05-06 03:06:39 【问题描述】:

我想向用户显示最近的活动。 (您可以阅读我的last question 了解更多信息)

我需要做一个大的 JOIN(超过 6 个表)。

我只需要为每个 ID 获取一行,但有些表的每个 ID 包含多于一行。例如,文章 ID 在“投票”表中只能有一行,但在“图片”表中可以有很多,因为每篇文章可以有多个图片,但我只想要一张图片。

所以我需要做这样的事情(当然这段代码是错误的):

SELECT table1.item, table2.item, table3.item, table4.item, table5.item 
FROM table1
LEFT OUTER JOIN ... ON ... AND ...
LEFT OUTER JOIN ... ON ... AND ...
LEFT OUTER JOIN ... ON ... AND ... LIMIT 1
LEFT OUTER JOIN ... ON ... AND ... LIMIT 1
WHERE table1.item = ?;

我怎样才能做到这一点?

【问题讨论】:

mysql 没有分析/窗口化/排名功能来支持此类查询 - 有关示例和方法,请参见 best-n-per-group 标签。 【参考方案1】:

这类似于 http://dev.mysql.com/doc/refman/5.1/en/example-maximum-column-group-row.html

【讨论】:

以上是关于LIMIT 1 inside JOIN 来自 MySQL 中的特定表?的主要内容,如果未能解决你的问题,请参考以下文章

INNER JOIN LIMIT 1 使用分页

如何在 LEFT JOIN 上使用 LIMIT?

MySQL left join with 'b's limit

MySQL 子查询与 LIMIT 与 JOIN

SparkSQL大数据实战:揭开Join的神秘面纱

对 SQL INNER JOIN 查询应用 LIMIT [重复]