我试图从另一个表上具有相同值的表中更新所有行(我只需要更新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更新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))
但没有结果......
我做错了什么?或者它是一个完全不同的查询? 提前谢谢。
答案 0 :(得分: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
答案 1 :(得分: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
答案 2 :(得分: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和项目进行选择以验证它们是否相同?可能这两列只是没有相同的值
答案 3 :(得分:1)
Update
prods
Set
PrecioCompra = prodnuevos.Costo,
PrecioVenta = prodnuevos.Costo,
Cantidad = prodnuevos.Cantidad
FROM
prodnuevos
WHERE
prods.Nombre = prodnuevos.Item