1

私は2つのテーブルを持っています:

  • 表1:group_name、item_name、status
  • 表2:group_name、geo

更新したいtable1table1デフォルトのステータスは0です。単一のUPDATEステートメントを使用してステータスを1に更新したいと思います。

に存在するtable1場合は、の各行をチェックしたいと思います。もしそうなら、私はステータスを1に更新します。group_nametable2

これを試しましたが、正しい結果を得ることができませんでした。

UPDATE table1
SET table1.`STATUS`=1 
WHERE table2.group_name=table1.group_name

どうすれば希望の結果を得ることができますか?

4

3 に答える 3

3

他の人が示したように、マルチテーブル更新を使用できます。ただし、サブセレクトを使用した単一のテーブル更新ステートメントを使用して、少し簡単な方法で行うこともできます。

UPDATE table1
SET STATUS = 1 
WHERE group_name IN (SELECT group_name FROM table2)

statusまた、すべての行が最初にゼロに設定されているという前提条件さえ必要ないことにも注意してください。UPDATE1 つのステートメントですべての行を正しい値に更新できます。

UPDATE table1
SET STATUS = group_name IN (SELECT group_name FROM table2)
于 2012-06-24T20:57:58.487 に答える
3

複数の更新テーブル構文を使用できるため、クエリは次のようになります。

UPDATE table1,table2
SET table1.`STATUS`=1 
WHERE table2.group_name=table1.group_name
于 2012-06-24T21:05:24.010 に答える
1

SET は彼のコマンドです...実際のフォーマットは次のとおりです: update "tablename" set "columnname" = "newvalue" [,"nextcolumn" = "newvalue2"...] where "columnname" OPERATOR "value" [and|or 「列」演算子「値」];

SQLデータベースを稼働させていませんが、UPDATEコマンドはFROMコマンドに似ていると思うので、そうしなければならないと思います

UPDATE table1, table2 SET table1.'status' = 1 
WHERE table2.group_name=table1.group_name
于 2012-06-24T21:05:15.357 に答える