所以我想将两个表连接在一起,但是对于第一个表中的每一行,我只想将它连接到另一个表中的前8个匹配行,按该表中的一个列排序。我可以使用任何聪明的语法,还是我需要弄乱子查询?
答案 0 :(得分:2)
看看
How to select the first/least/max row per group in SQL
部分从每个组中选择前N行
这是一个稍微难点的问题 解决。从每个中找到一行 使用SQL的聚合很容易组 函数(MIN(),MAX()等)。 找到每个的前几个 使用该方法无法进行分组 因为只有聚合函数 返回单个值。不过,它还是 可能的事。
答案 1 :(得分:-1)
这可能不是最好的解决方案,但是假设你加入了ID,你可以在where子句中使用子查询。
select from table1 where id in (select top 8 id from table2 order by column1 desc)