0

構造が同一の 2 つのテーブルがあります。Table1モデレートされたデータをtable2保持し、残りを保持します。

表1

+--------+--------+---------------+--------+-------- ---+
| | "ID" | "名前" | "説明" | "タイプ" | "国" |
+--------+--------+---------------+--------+-------- ---+
| | "5" | "a" | "×" | "1" | "米国" |
| | "6" | "b" | "×" | "1" | "イギリス" |
+--------+--------+---------------+--------+-------- ---+

表 2

+-----+----------+-----------+-----------------+ --------+-----------+----------+
| | "ID" | 組織ID | "名前" | "説明" | "タイプ" | "国" | "ステータス" |
+-----+----------+-----------+-----------------+ --------+-----------+----------+
| | "1" | "5" | 「タイトル1」 | "説明 1" | "1" | "米国" | "2" |
| | "2" | "6" | 「タイトル2」 | "説明 2" | "1" | "イギリス" | "2" |
| | "3" | "6" | 「タイトル2」 | "説明 2" | "1" | "イギリス" | "2" |
+-----+----------+-----------+-----------------+ --------+-----------+----------+

table 1からのデータで更新するために以下のSQLを実行しましたが、table 2うまくいきました。それらが実際に何であるかは、さまざまなタイトルと説明に対してユーザーが提案した編集です。そのため、同じものが複数存在する可能性がありますorgId

UPDATE table1 a
INNER JOIN table2 b
ON a.id = b.id
SET a.name = b.name,
a.description = b.description
WHERE a.id=1; // Problem lies here

私の問題は、 のみを取得table2idtypeスクリプトcountryでそれを上記の sql を含む関数に渡すことです。

WHEREでは、そこの句でどのテーブルを指定すればよいでしょうか。a ~ table1またはである必要がありますb ~ table2。現在はですが、クエリ文字列でaの値を取得できず、複数あるため を使用できません。また、クエリ文字列でそれを取得するには、さらに多くのコードといくつかの変更が必要になります。a.idorgId

使えばいいのかな

 UPDATE table1 a
    INNER JOIN table2 b
    ON a.id = b.id
    SET a.name = b.name,
    a.description = b.description
    WHERE b.id=3; // Can I specify id from b here

私はこれを試してみましたが、うまくいきますが、これは正しいことですか?

4

2 に答える 2

0

はい、まったく問題ありません。結合により、正しいデータを確実に取得できます。

このため...

ON a.id = b.id

a.id = 3or句b.id = 3で使用できますWHERE

于 2013-06-10T10:20:12.560 に答える