【问题标题】:order id's in sqlserver table while adding a value添加值时在sql server表中订购id
【发布时间】:2013-10-14 13:20:07
【问题描述】:

大家好,我在 sqlserver 表中有大约 5 个值,其中一个字段是“orderid”,我想更新其中的 1 个值并更改其订单 ID。比如

apples is 1
oranges is 2
bananas is 3
pears 4
grapes 5
etc etc

我想更新香蕉,使其订单 ID 为 2,但它也更新了表的其余部分,因此 orderid 的行为就像它是一个唯一字段

任何人都可以建议使用存储过程或 asp.net c# 的最佳方法

【问题讨论】:

  • 您的意思是您需要运行一个简单的 TSQL UPDATE 命令来更新表中的字段?还是我错过了什么,而这更臭名昭著?
  • orderid 是主键吗?如果是这样,橙子应该怎么办?其他表中是否也引用了此 orderid,为什么您仍然需要这样做?
  • 是的,我需要运行一个简单的 TSQL UPDATE 命令
  • 是什么让您无法运行 UPDATE?当你尝试时会发生什么?
  • 如果我只运行 sql UPDATE tbl SET orderid = 2 WHERE fruit = 'bananas' 我会得到两个 orderid 为 2 的

标签: asp.net sql-server stored-procedures


【解决方案1】:

由于您正在使用新 ID 更新现有项目的顺序。确保已经持有该订单的商品获得订单 ID。可能是正在更新的商品的订单 ID。所以这是一种可以根据您的要求执行的交换操作。

以下是交换项目 orderid 的代码:

-- Create test table
Create table Orders(
OrderId int, 
Name varchar(100)
)
Go

-- Create data in table
insert Orders(
OrderId,
Name
)
select 1 as OrderId,'Apple' as Name
Union
select 2 as OrderId,'Oranges' as Name
Union
select 3 as OrderId,'Bananas' as Name
Union
select 4 as OrderId,'Pears' as Name
Union
select 5 as OrderId,'Grapes' as Name

Go

-- Create proc 
Alter Proc SetOrder
@OrderId as int, 
@Name as varchar(100)

AS

-- Swap/Rearrange ordering of old order of item with requested Order and item

Update Orders set OrderId = (Select TOP 1 Orderid from Orders where Name = @Name)
Where Name = (Select TOP 1 Name from Orders where orderId = @OrderId)

-- Now update the request item.
Update Orders set orderId = @OrderId
Where Name = @Name

Go

-- Test
Execute dbo.SetPriority 2, 'Bananas'

【讨论】:

    【解决方案2】:
    Update tablename set orderid=2 where name='bananas'
    

    【讨论】:

    • 那么目前orderid为2的橙子呢?
    • 您没有具体说明。请更新您的问题并告诉我们您的表架构并正确提出您的问题,以便我们根据您的要求回答。
    • 我显然没有在这里说清楚,我需要遍历整个 ds 并更新每个其他条目,因此每个 orderid 只有一个数字
    • 请明确说明您的标准,例如您要更新 orderid 的依据以及现有的 orderid 应该如何处理?
    【解决方案3】:
    UPDATE TableName 
    SET orderid = 2 
    WHERE Name = 'bananas'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-02
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多