更新和左外部联接语句

问题描述

| 我有两个具有关系的表格,并且我想更新表A中的一个字段。是否可以将更新和联接合并到同一查询中?我用谷歌搜索,但没有找到任何可行的解决方案?
UPDATE md SET md.status = \'3\' 
FROM pd_mounting_details AS md 
LEFT OUTER JOIN pd_order_ecolid AS oe ON md.order_data = oe.id
我正在使用MS SQL     

解决方法

        
Update t 
SET 
       t.Column1=100
FROM 
       myTableA t 
LEFT JOIN 
       myTableB t2 
ON 
       t2.ID=t.ID
用表名替换
myTableA
,并用列名替换
Column1
。 之后,只需将LEFT JOIN加入tableB。在这种情况下,
t
只是
myTableA
的别名。
t2
是联接表的别名,在我的示例中为
myTableB
。如果您不喜欢使用
t
t2
,请使用您喜欢的任何别名-没关系-我只是喜欢使用那些别名。     ,        如果您需要的是SELECT语句中的UPDATE,则可以执行以下操作:
UPDATE suppliers    
SET city = (SELECT customers.city FROM customers

WHERE customers.customer_name = suppliers.supplier_name)
    ,        另一个示例是将表1中的列值插入表2中的列:
UPDATE  Address
SET     Phone1 = sp.Phone
FROM    Address ad LEFT JOIN Speaker sp
ON      sp.AddressID = ad.ID
WHERE   sp.Phone <> \'\' 
    ,        此查询中的Left连接毫无意义:
UPDATE md SET md.status = \'3\' 
FROM pd_mounting_details AS md 
LEFT OUTER JOIN pd_order_ecolid AS oe ON md.order_data = oe.id
无论
pd_order_ecolid
中是否存在匹配的行,它都会更新
pd_mounting_details
的所有行。如果您只想更新匹配的行,则应为内部联接。 如果要基于是否发生连接应用某些条件,则需要在
SET
子句中添加
WHERE
子句和/或
CASE
表达式。     ,        在mysql中,
SET
子句必须位于
JOIN
之后。例:
UPDATE e
    LEFT JOIN a ON a.id = e.aid
    SET e.id = 2
    WHERE  
        e.type = \'user\' AND
        a.country = \'US\';
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...