1
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;
4

3 回答 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 回答