【发布时间】:2010-02-11 20:37:20
【问题描述】:
所以我想将两个表连接在一起,但对于第一个表中的每一行,我只想将它连接到另一个表中的前 8 个匹配行,按该表中的一个列排序。我可以使用任何聪明的语法,还是我需要弄乱子查询?
【问题讨论】:
所以我想将两个表连接在一起,但对于第一个表中的每一行,我只想将它连接到另一个表中的前 8 个匹配行,按该表中的一个列排序。我可以使用任何聪明的语法,还是我需要弄乱子查询?
【问题讨论】:
看看
How to select the first/least/max row per group in SQL
从每组中选择前 N 行
这是一个稍微困难的问题 解决。从每个中查找一行 使用 SQL 的聚合组很容易 函数(MIN()、MAX() 等)。 从每个中找到前几个 使用该方法无法进行组 因为只有聚合函数 返回单个值。尽管如此,还是 可以做。
【讨论】:
这可能不是最好的解决方案,但是假设您要加入 ID,您可以在 where 子句中使用子查询。
select from table1 where id in (select top 8 id from table2 order by column1 desc)
【讨论】: