0

私は2つのテーブルを持っています。「report」と「panel_calculation」はテーブルです。

report contains:

r_zone   r_address    r_status
=======+==========+============
1          8             0
2          9             0
2          6             0
7          9             0
3          2             0


panel_calculation contains:

p_cal_zone  p_cal_address  p_status
===========+==============+============
7                9             1
3                2             1

'panel_calculation'テーブルに基づいて'report'テーブルのr_status列を更新する必要があります。

最終結果は次のようになります。

Final 'report' should be like this:

r_zone   r_address    r_status
=======+==========+============
1          8             0
2          9             0
2          6             0
7          9             1
3          2             1

私はあなたの提案が必要です。

4

4 に答える 4

1

テーブルを更新する場合でも、両方のテーブルを結合できます。

UPDATE  report s
        INNER JOIN panel_calculation b
            ON s.r_zone = b.p_cal_zone
SET     s.r_status = b.p_status
于 2012-11-25T07:17:13.743 に答える
1

これを試して:

UPDATE report r
INNER JOIN panel_calculation p ON r.r_zone = p.p_cal_zone 
SET r.r_status = p.p_status;

SQLフィドルデモ

于 2012-11-25T07:17:18.560 に答える
0

LEFT JOINは、次のように使用できます。

UPDATE report t1
LEFT JOIN panel_calculation t2
    ON t1.r_zone=t2.p_cal_zone
    AND t1.r_address=t2.p_cal_address
SET t1.r_status=t2.p_status
于 2012-11-25T07:20:22.963 に答える
0

問題の解決策として、以下のSQLクエリを実行してみてください

  update report r set r_status=(select p_status from panel_calculation where p_cal_zone=r.r_zone limit 1 )
于 2012-11-25T07:34:30.110 に答える