Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询返回表中的所有列,但最多有3个重复id_Sql_Sql Server_Tsql - Fatal编程技术网

SQL查询返回表中的所有列,但最多有3个重复id

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是什么意

有人能帮个忙吗?我一直在玩弄极限或极限,但我认为我偏离了轨道。我想返回表中的所有字段,但新表中最多有3个重复id

桌子

所需结果最多3个ID

谢谢

因为您提到了TOP,所以这是针对SQL SERVER的


既然你说的是极限,我可以假设你说的是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