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 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)

2 つの相関するサブクエリを使用する非常に醜い構文 (where節は、fee_id が一致しないケースを処理するためのものです)。これが、ほとんどのデータベースがupdateクエリでの結合をサポートするメカニズムを備えている理由です。

于 2012-12-22T00:35:43.843 に答える
0

UPDATEテーブル内のフィールドを更新するには、ステートメントを使用する必要があります。SQL Server を使用している場合は、次のように JOIN を使用して、1 つのテーブルのフィールドを別のテーブルの値で更新します。

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 に答える