SQL UPDATE从表2到表1 WHERE

时间:2018-02-27 17:08:40

标签: sql ms-access

我试图从表2中的数据更新表1,其中ID匹配...当前尝试以下SQL脚本,它不适合我!任何帮助都会很棒。

UPDATE tbleVendorData
   SET tbleVendorData.VendorActive = tbleTemporary.F7
  FROM tbleTemporary
 WHERE tbleTemporary.F1 (SELECT VendorNumber FROM tbleVendorData)

没有任何事情发生在Column" VendorActive"当我运行这个脚本时,我希望它会更新tbleTemporary.F7

中的所有内容

3 个答案:

答案 0 :(得分:1)

据推测,你打算这样:

UPDATE tbleVendorData INNER JOIN
       tbleTemporary
       ON tbleTemporary.F1 = tbleVendorData.VendorNumber
   SET tbleVendorData.VendorActive = tbleTemporary.F7

答案 1 :(得分:0)

UPDATE vendor
SET vendor.VendorActive = temp.F7
FROM tbleVendorData vendor 
join tbleTemporary temp on vendor.VendorNumber = temp.F1 --this is my guess
--    WHERE temp.F1 in (SELECT VendorNumber FROM tbleVendorData)

答案 2 :(得分:0)

因为你声明应该编辑哪个表,所以不需要在列名之前再次写表,但是你必须在最后一行指定一些条件。 如果您想更新可以从(SELECT VendorNumber FROM tbleVendorData)检索的所有记录,那么您的查询应该是

UPDATE tbleVendorData
   SET tbleVendorData.VendorActive = tbleTemporary.F7
  FROM tbleTemporary
 WHERE tbleTemporary.F1 in (SELECT VendorNumber FROM tbleVendorData)

如果您想更新一条记录,则必须在查询结束时设置限制

但是你是否写过像

这样的查询
UPDATE tbleVendorData
       SET tbleVendorData.VendorActive = tbleTemporary.F7
      FROM tbleTemporary
     WHERE tbleTemporary.F1 = (SELECT VendorNumber FROM tbleVendorData) 

然后查询将不会执行,因为它将检索到许多记录,并且无法与1列进行比较,但如果您确实想要使用' ='运算符然后您的查询应该看起来像这样

 UPDATE tbleVendorData
           SET tbleVendorData.VendorActive = tbleTemporary.F7
          FROM tbleTemporary
         WHERE tbleTemporary.F1 = (SELECT VendorNumber FROM tbleVendorData limit 1) 

在上述情况下,它将更新与供应商编号

匹配的第一条记录