SQL 从哪里查询更新
SQL Update From Where Query
我有 2 个 table 里面有信息。当 ClientUID 和 DeviceID 匹配以及 A_DEV_SUBSTVAR_VALUE table = samaccount 名称。这是我尝试 运行 但我不断收到错误的查询:
UPDATE A_CLIENT
SET SelfServiceUserName = (SELECT SubstVarValue
FROM A_DEV_SUBSTVAR_VALUE
WHERE A_DEV_SUBSTVAR_VALUE.SubstVarName = 'samaccountname')
WHERE A_CLIENT.ClientUID = A_DEV_SUBSTVAR_VALUE.DeviceID
试试
update a_client c
inner join a_dev_substvar_value d on
c.clientuid = d.deviceid
set
c.selfserviceusername = d.substvarvalue
where
d.substvarname = 'samaccountname';
注意,你应该尽量避免在你的 were 子句中写 select 语句,因为它是 运行 for ever row 返回。这可能是一个很大的性能损失。
应该可以。
我总是先在两个 table 之间写一个连接,以并排获得我想要的行,并确保我的 JOIN 子句正确。
SELECT p.ProductID, p.ProductName, p.Price AS OldPrice, n.Price as NewPrice
FROM Products as p
JOIN NewPrices as n on p.ProductID = n.ProductID
完成后,通过用 UPDATE 和 SET 替换 SELECT 子句,很容易将其更改为更新语句:
UPDATE p
SET Price = n.Price
FROM Products as p
JOIN NewPrices as n on p.ProductID = n.ProductID
请注意,您不要在 SET 子句左侧为 Price 设置别名,因为它必然来自 p(产品)table,因此没有歧义。您仍然必须在等号右侧为价格添加别名,因为它可能是来自 p(产品)或 n(新价格)table.
的字段
如果您的 SQL 引擎支持,您也可以使用 CTE(通用 Table 表达式):
WITH x AS (
SELECT p.ProductID, p.ProductName, p.Price AS OldPrice, n.Price as NewPrice
FROM Products as p
JOIN NewPrices as n on p.ProductID = n.ProductID
)
UPDATE x set OldPrice = NewPrice
我有 2 个 table 里面有信息。当 ClientUID 和 DeviceID 匹配以及 A_DEV_SUBSTVAR_VALUE table = samaccount 名称。这是我尝试 运行 但我不断收到错误的查询:
UPDATE A_CLIENT
SET SelfServiceUserName = (SELECT SubstVarValue
FROM A_DEV_SUBSTVAR_VALUE
WHERE A_DEV_SUBSTVAR_VALUE.SubstVarName = 'samaccountname')
WHERE A_CLIENT.ClientUID = A_DEV_SUBSTVAR_VALUE.DeviceID
试试
update a_client c
inner join a_dev_substvar_value d on
c.clientuid = d.deviceid
set
c.selfserviceusername = d.substvarvalue
where
d.substvarname = 'samaccountname';
注意,你应该尽量避免在你的 were 子句中写 select 语句,因为它是 运行 for ever row 返回。这可能是一个很大的性能损失。
应该可以。
我总是先在两个 table 之间写一个连接,以并排获得我想要的行,并确保我的 JOIN 子句正确。
SELECT p.ProductID, p.ProductName, p.Price AS OldPrice, n.Price as NewPrice
FROM Products as p
JOIN NewPrices as n on p.ProductID = n.ProductID
完成后,通过用 UPDATE 和 SET 替换 SELECT 子句,很容易将其更改为更新语句:
UPDATE p
SET Price = n.Price
FROM Products as p
JOIN NewPrices as n on p.ProductID = n.ProductID
请注意,您不要在 SET 子句左侧为 Price 设置别名,因为它必然来自 p(产品)table,因此没有歧义。您仍然必须在等号右侧为价格添加别名,因为它可能是来自 p(产品)或 n(新价格)table.
的字段如果您的 SQL 引擎支持,您也可以使用 CTE(通用 Table 表达式):
WITH x AS (
SELECT p.ProductID, p.ProductName, p.Price AS OldPrice, n.Price as NewPrice
FROM Products as p
JOIN NewPrices as n on p.ProductID = n.ProductID
)
UPDATE x set OldPrice = NewPrice