Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 server 2005 从表格WithnRows中选择前1、2、3行ID_Sql Server 2005_Loops - Fatal编程技术网

Sql server 2005 从表格WithnRows中选择前1、2、3行ID

Sql server 2005 从表格WithnRows中选择前1、2、3行ID,sql-server-2005,loops,Sql Server 2005,Loops,愚蠢的问题和答案可能不存在!呻吟咬!牙齿 我有一个选择: SELECT * FROM SockDrawer WHERE Color = 'red' 这将产生3行,行ID为338963590137903 还有很多其他的结果 我想要的是这样的东西: DECLARE @ROWID INT --- HOW DO I USE ARRAYS? I'll google but an example would help. DECLARE @COUNT INT DECLARE @LIMIT INT SELE

愚蠢的问题和答案可能不存在!呻吟咬!牙齿

我有一个选择:

SELECT * FROM SockDrawer WHERE Color = 'red'
这将产生3行,行ID为338963590137903 还有很多其他的结果

我想要的是这样的东西:

DECLARE @ROWID INT --- HOW DO I USE ARRAYS? I'll google but an example would help.
DECLARE @COUNT INT
DECLARE @LIMIT INT

SELECT * FROM SockDrawer WHERE Color = 'red' 
--(Returns 3 rows. With 3 RowId's 33896, 35901, 33896)

SET @LIMIT = @@ROWCOUNT

SET @COUNT = 1
WHILE @COUNT < @LIMIT BEGIN
  SET @ROWID[0] = (SELECT SockKey From SockDrawer WHERE RowID = 33896)
  SET @ROWID[1] = (SELECT SockKey From SockDrawer WHERE RowID = 35901)
  SET @ROWID[2] = (SELECT SockKey From SockDrawer WHERE RowID = 33896)
  SET @Count = @Count + 1
 END
GO

Then I need to:


SET @COUNT = 0
WHILE @COUNT < @LIMIT 
    BEGIN
        DELETE FROM SockDrawer WHERE RowID = @ROWID[@COUNT]
    END
GO
诀窍是,我永远不知道我要删除的是1行还是50行

我是个笨蛋。我可以改变。如果我想的话


如果您不在乎每种颜色剩下哪只袜子,那么:

;WITH x AS 
(
  SELECT *, rn = ROW_NUMBER() OVER (PARTITION BY Color ORDER BY RowID)
    FROM dbo.SockDrawer
)
DELETE x WHERE rn > 1;

如果您关心保留哪一行,请相应地调整顺序。

您能解释一下为什么这三行比颜色为“红色”的所有其他行更重要吗?这就是所有行。我只需要ID,因为我必须使用它们在该循环中激发一些其他SQL。所以我需要每一只匹配袜子的RowId。我的想法是,我有一堆垃圾箱,每天我都要平衡每个垃圾箱,这样每个垃圾箱就有一种颜色。这种情况一天可能发生几次。我认为socks应该是一个简单的上下文。那么,为什么不说明你的实际问题呢?我需要删除行,这样每种颜色只剩下一行,而不是说我如何使用数组,这里是一些我尝试过的不起作用的代码。我很抱歉。我在试着训练一个新的文学学士。我必须为主人的姐妹计算机运行桌面支持,我花了3个小时来输入您在上面看到的内容,没有中断。