Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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 我想将此绿框行的“数量”列的值200更新为100。。怎么做?_Sql_Sql Server - Fatal编程技术网

Sql 我想将此绿框行的“数量”列的值200更新为100。。怎么做?

Sql 我想将此绿框行的“数量”列的值200更新为100。。怎么做?,sql,sql-server,Sql,Sql Server,这是TBL销售表。它包含两个值相同的行。。我要更新此绿色方框行。。请帮帮我。。我是SQL Server的初学者 上图中的表格局部视图: CustID SalesDate ItemId Quantity Amount --------------------------------------------------- C1 2009-01-01 ABC 100 1000.00 C2 2009-01-01 ABC

这是TBL销售表。它包含两个值相同的行。。我要更新此绿色方框行。。请帮帮我。。我是SQL Server的初学者

上图中的表格局部视图:

CustID   SalesDate    ItemId    Quantity   Amount
---------------------------------------------------
C1       2009-01-01   ABC       100        1000.00
C2       2009-01-01   ABC       200        2000.00
C4       2009-12-01   PQR       200        2000.00
C4       2009-12-01   PQR       200        2000.00   <---- this one!
C2       2009-01-04   XYZ       500        NULL
C1       2009-01-05   XYZ       NULL       500.00
在对象资源管理器上: 展开数据库,然后展开表,然后右键单击表>并选择“编辑前200行”

然后编辑并保存它

如果要使用查询,可以使用RN

WITH CTE AS(
   SELECT *,
       RN = ROW_NUMBER()OVER(PARTITION BY CustID ORDER BY CustID)
   FROM tblSales
)
UPDATE CTE set Quantity='100' WHERE RN=2 and CustID='C4';
在对象资源管理器上: 展开数据库,然后展开表,然后右键单击表>并选择“编辑前200行”

然后编辑并保存它

如果要使用查询,可以使用RN

WITH CTE AS(
   SELECT *,
       RN = ROW_NUMBER()OVER(PARTITION BY CustID ORDER BY CustID)
   FROM tblSales
)
UPDATE CTE set Quantity='100' WHERE RN=2 and CustID='C4';

因为我看不到整张桌子,我不确定这是否有效,但是

您的记录可能具有唯一的标识符ID、主键等,并且从图像中可以看出,复制的行在图片左侧部分截断的字段中具有唯一或至少不同的值。假设这些行具有从1到6的顺序ID。如果是,则可以执行简单的更新查询:

UPDATE tblSales
SET column_name = new_value, column_name2 = new_value . . .
WHERE ID = 4;
在这种情况下,指定要进行的更改-例如,更改第四行的数量:

UPDATE tblSales
SET quantity = 100
WHERE ID = 4;
如果该列中的ID不是唯一的,则它仍然与上面的行不同,因此您可以执行以下操作:

UPDATE tblSales
SET quantity = 100
WHERE id = 4 AND CustID = 'C4' and ItemID = 'PQR';
多个WHERE将唯一标识行。在这种情况下,您可以首先将其作为SELECT查询运行,以确保在继续更新之前它只标识一行


如果没有唯一标识符,并且这些是真正的重复行,我建议您使用以下内容:

因为我看不到整个表,我不确定这是否有效,但是

您的记录可能具有唯一的标识符ID、主键等,并且从图像中可以看出,复制的行在图片左侧部分截断的字段中具有唯一或至少不同的值。假设这些行具有从1到6的顺序ID。如果是,则可以执行简单的更新查询:

UPDATE tblSales
SET column_name = new_value, column_name2 = new_value . . .
WHERE ID = 4;
在这种情况下,指定要进行的更改-例如,更改第四行的数量:

UPDATE tblSales
SET quantity = 100
WHERE ID = 4;
如果该列中的ID不是唯一的,则它仍然与上面的行不同,因此您可以执行以下操作:

UPDATE tblSales
SET quantity = 100
WHERE id = 4 AND CustID = 'C4' and ItemID = 'PQR';
多个WHERE将唯一标识行。在这种情况下,您可以首先将其作为SELECT查询运行,以确保在继续更新之前它只标识一行


如果没有唯一标识符,并且这些行是真正的重复行,我建议您这样做:

我猜它不是主键。这只是管理工作室本身的一个行号。这就是为什么我认为这个查询在这种情况下不起作用。我只是认为OP的表结构中没有ID。只有我们看到的卡斯蒂德。但我不确定,让我们等待操作确认。我猜它不是主键。这只是管理工作室本身的一个行号。这就是为什么我认为这个查询在这种情况下不起作用。我只是认为OP的表结构中没有ID。只有我们看到的卡斯蒂德。但我不确定,让我们等待手术确认;如果这两行相同,那么您的表称为a。避免堆的原因有很多,使用堆的原因也只有几个。如果您还没有,我建议您阅读.Off-topic中的这篇文章;如果这两行相同,那么您的表称为a。避免堆的原因有很多,使用堆的原因也只有几个。如果你还没有读过这篇文章,我建议你读一下。