SQL查询返回表中的所有列,但最多有3个重复id
有人能帮个忙吗?我一直在玩弄极限或极限,但我认为我偏离了轨道。我想返回表中的所有字段,但新表中最多有3个重复id 桌子 所需结果最多3个ID 谢谢 因为您提到了TOP,所以这是针对SQL SERVER的SQL查询返回表中的所有列,但最多有3个重复id,sql,sql-server,tsql,Sql,Sql Server,Tsql,有人能帮个忙吗?我一直在玩弄极限或极限,但我认为我偏离了轨道。我想返回表中的所有字段,但新表中最多有3个重复id 桌子 所需结果最多3个ID 谢谢 因为您提到了TOP,所以这是针对SQL SERVER的 既然你说的是极限,我可以假设你说的是mySQL?或者至少不是MSQlooops,mssql中没有限制吗难怪它不喜欢我的提问。是的,我正在使用mssql。很抱歉造成混淆。谢谢John,但是运行上面的命令只返回三行John Doe。我想要最多三个,所以这很好,但是对于所有ID。你说的所有ID是什么意
既然你说的是极限,我可以假设你说的是mySQL?或者至少不是MSQlooops,mssql中没有限制吗难怪它不喜欢我的提问。是的,我正在使用mssql。很抱歉造成混淆。谢谢John,但是运行上面的命令只返回三行John Doe。我想要最多三个,所以这很好,但是对于所有ID。你说的所有ID是什么意思?在我上面的示例表中,我有ID的1,2,3。当我运行你的代码时,它只返回ID 1,John Doe,三次。我想返回所有ID,但将重复ID限制为最多三个。请看上面的期望结果表。老实说,我有点困惑,小提琴的结果与上面的结果有何不同?或者如果你有ID 1-10,你只想返回1-3吗?哦,我以前没有点击小提琴链接,那些结果正是我想要的!但当我在SQLServer中运行相同的查询时,情况并非如此。我只得到无名氏。我的数据类型都是varchar,这会有所不同吗?
id first last
===================
1 John Doe
1 John Doe
1 John Doe
1 John Doe
2 Mary Green
2 Mary Green
3 Stacy Kirk
3 Stacy Kirk
3 Stacy Kirk
3 Stacy Kirk
3 Stacy Kirk
id first last
====================
1 John Doe
1 John Doe
1 John Doe
2 Mary Green
2 Mary Green
3 Stacy Kirk
3 Stacy Kirk
3 Stacy Kirk
SELECT id, first, last
FROM
(
SELECT id, first, last,
ROW_NUMBER() OVER (PARTITION BY ID ORDER BY LAST) rn
FROM TABLE1
) s
WHERE s.rn <= 3