0

我正在尝试从在另一个表上具有相同值的表中更新所有行(我只需要更新 3 列)...

这是我的桌子...

CREATE TABLE [dbo].[prods](
    [IdProducto] [int] IDENTITY(1,1) NOT NULL,
    [IdGrupo] [int] NULL,
    [IdCategoria] [int] NULL,
    [IdAlmacen] [varchar](50) NULL,
    [Codigo] [varchar](50) NULL,
    [Nombre] [varchar](50) NULL,
    [Descripcion] [varchar](max) NULL,
    [Cantidad] [int] NULL,
    [Imagen] [varchar](max) NULL,
    [StockMin] [int] NULL,
    [StockMax] [int] NULL,
    [Ancho] [varchar](50) NULL,
    [Alto] [varchar](50) NULL,
    [Largo] [varchar](50) NULL,
    [Peso] [varchar](50) NULL,
    [Volumen] [varchar](50) NULL,
    [Color] [varchar](50) NULL,
    [Material] [varchar](50) NULL,
    [Presentacion] [varchar](50) NULL,
    [bitPrecioVentaUnico] [int] NULL,
    [PrecioCompra] [money] NULL,
    [DescuentoCompra] [float] NULL,
    [PrecioVenta] [money] NULL,
    [DescuentoVenta] [float] NULL,
    [Estado] [varchar](20) NULL
)

CREATE TABLE [dbo].[prodnuevos](
    [Codigo] [int] NULL,
    [itemid] [int] NULL,
    [Item] [varchar](255) NULL,
    [Categoria] [varchar](255) NULL,
    [Cantidad] [int] NULL,
    [Minima] [nvarchar](255) NULL,
    [Costo] [money] NULL,
    [Valor] [money] NULL,
    [peso] [float] NULL,
    [unidades] [float] NULL
)

我想做的是以下..

Update prods 
Set prods.PrecioCompra = prodnuevos.Costo, 
prods.PrecioVenta = prodnuevos.Costo, 
prods.Cantidad = prodnuevos.Cantidad 
WHERE prods.Nombre = prodnuevos.Item;

(使用 prodnuevos 的 Costo 和 Cantidad 更新 Prods 中的 PrecioCompra、PrecioVenta 和 Cantidad,其中 Nombre 和 Item 相同)

显然上面的查询不起作用,但我只是想解释我的问题。我已经尝试了各种成功的查询组合。(尽管必须更新 3 列,但我不介意是否必须使用 3 个不同的查询)

我尝试过类似的东西

    UPDATE       prods c
    SET          c.PrecioCompra =
      (SELECT        a.Costo
      FROM            prodnuevos AS a INNER JOIN
         prods AS z ON z.Nombre = a.Item 
WHERE        (a.Item = c.Nombre))

但没有结果...

难道我做错了什么??或者这是一个完全不同的查询?提前致谢。

4

4 回答 4

3
Update prods Set 
prods.PrecioCompra = prodnuevos.Costo,
prods.PrecioVenta = prodnuevos.Costo, 
prods.Cantidad = prodnuevos.Cantidad
from prods inner join prodnuevos
on prods.Nombre = prodnuevos.Item
于 2013-01-10T19:50:37.037 回答
1

你非常接近。尝试这样的事情:

UPDATE p SET p.PrecioCompra = pn.Costo, 
    p.PrecioVenta = pn.Costo, 
    p.Cantidad = pn.Cantidad
FROM prods p
INNER JOIN prodnuevos pn
ON p.Nombre = pn.Item
于 2013-01-10T19:49:19.577 回答
1
update p
set
      p.PrecioCompra = pN.Costo
    , p.PrecioVenta = pN.Costo
    , p.Cantidad = pn.Cantidad 
from
    prods p
        inner join prodsnuevos pN on p.Nombre = pN.item

另外,您能否在 Nombre 和 item 上进行选择以验证它们是否相同?可能是这两列中的值不同

于 2013-01-10T19:49:56.193 回答
1
Update 
    prods 
Set 
  PrecioCompra = prodnuevos.Costo, 
  PrecioVenta = prodnuevos.Costo, 
  Cantidad = prodnuevos.Cantidad 
FROM 
  prodnuevos
WHERE 
  prods.Nombre = prodnuevos.Item
于 2013-01-10T19:57:34.990 回答