テーブルの列を更新する必要があります。更新値は別のテーブルから取得する必要があります。私が行ったクエリはステートメントです:
update db1.t1 set location=(select countryName from db1.t1, db2.t2 where t1.num
between t2.beginNum AND t2.endNum limit 1)
次のエラーが発生します。
Error Code: 1093 You can't specify target table t1 for update in FROM clause.
次に、句t1
からテーブル名を削除するとFROM
update db1.t1 set location=(select countryName from db2.t2 where num
between t2.beginNum AND t2.endNum limit 1)
クエリは機能しましたが、正しく機能したかどうかはわかりません。私の知る限り、FROM
複数のテーブルから取得する場合は、句で両方のテーブルを指定する必要があります。私が作業している2つのテーブルには、共通の列がありません。ただし、t1
の2つの値の間にある値がありますt2
。2番目のクエリは絶対に正しいですか?クエリは、句num
の後に最初のテーブルからのものであることをどのように認識しますか?where
間違った値を取得するのではないかと心配しています。