SELECT
a_fees a
a_temp b
SET
b.fee_source_id = a.fee_source,
b.filing_date = a.filingdate
WHERE
b.fee_id = a.fee_id;
问问题
55 次
3 回答
1
多表更新的 MySQL 语法:
UPDATE a_fees AS a, a_temp AS b
SET a.fee_source = b.fee_source_id,
a.filingdate = b.filing_date
WHERE a.fee_id = b.fee_id;
在线查看它:sqlfiddle
使用INNER JOIN
:
UPDATE a_fees AS a
INNER JOIN a_temp AS b
ON a.fee_id = b.fee_id
SET a.fee_source = b.fee_source_id,
a.filingdate = b.filing_date;
在线查看它:sqlfiddle
于 2012-12-22T00:30:20.037 回答
0
您应该使用UPDATE
语句来更新表中的字段。如果您在 SQL Server 中,您将使用 JOIN 使用不同表中的值更新一个表中的字段,如下所示:
UPDATE b
SET
b.fee_source_id = a.fee_source,
b.filing_date = a.filingdate
FROM
a_fees a
JOIN a_temp b
ON a.fee_id = b.fee_id
于 2012-12-22T00:28:38.307 回答
0
我知道跨数据库工作的唯一语法是:
update a_temp
set fee_source_id = (select a_fees.fee_source from a_fees f where a_temp.fee_id = af.fee_id),
filing_date = (select a_fees.filing_date from a_fees f where a_temp.fee_id = af.fee_id)
where a_temp.fee_id in (select fee_id from a_fees)
非常丑陋的语法,使用两个相关的子查询(该where
子句是处理不匹配的 fee_ids 的情况),这就是为什么大多数数据库都有支持update
查询连接的机制的原因。
于 2012-12-22T00:35:43.843 回答