使用JOIN到UPDATE表

时间:2013-07-08 08:52:43

标签: sql-server tsql

我有两个表格,其中包含有关产品的信息

products
+-----------+------------+
|productid  |productname |
|Int        |varchar(50) |
+-----------+------------+


productdetail
+---------+----------+------------+------+------+
|detailId |productid |description |price |stock |
|Int      |Int       |Text        |Money |Int   |
|         |FK_From_  |            |      |      |
|         |productid_|            |      |      |
|         |products  |            |      |      |
+---------+----------+------------+------+------+

我试图通过将productName和stock传递给存储过程来使用TSQL更新库存水平。我希望能够做这样的事情

Pseudo Code

UPDATE productdetail.stock
SET stock = @stock
WHERE productdetail.productid = products.productname

我“想”我需要使用某种连接语句并查看this

并试图改变它以适合我的代码,但没有成功。

我想在一个查询中做什么?或者我是否需要首先选择productid,将其设置为变量然后将其用作更新查询的一部分,如果有可能使用JOIN语句,它会看起来像like这样:

 UPDATE tab_productdetails 
 SET stock = @newStock 
 FROM tab_productdetails productid
 INNER JOIN
 tab_productdetails productid ON
 @productName = tab_products.productname

我正在使用SQL server 2012 express。如果这有任何区别。

2 个答案:

答案 0 :(得分:2)

您不需要JOIN来更新表格。您需要使用whereselect

UPDATE productdetail
SET stock = @stock
WHERE productid = (select productid  from products where productname  = @productname )

此处@productname是您传递给查询的产品名称。

答案 1 :(得分:1)

你不需要一个联接(但你可以这样做)。 最清楚的方法是使用子查询:

UPDATE productdetail
 SET stock = @newStock 
WHERE productid = (SELECT productid FROM products WHERE product_name=@productname)