私はubuntu 12.10とMySQL WorkbenchでMySQL 5.1.41を使用しています。MySQLアップデートの参加が期待通りに機能しない
私は2つの製品表t1とt2を持っています。 t1はライブデータであり、t2はインポートされたデータであり、t1に更新して新しい製品価格をすべて更新する準備ができている。だから私は実行する:
SELECT * FROM t1
JOIN t2 ON t1.id = t2.id
WHERE t1.price != t2.price;
これは、価格が異なって更新する必要がある1201レコードを返します。だから私は実行します。
UPDATE t1 JOIN t2 ON t1.id = t2.id
SET t1.price = t2.price
WHERE t1.price != t2.price;
これはエラーなしで完了し、報告書1143行(複数可)の影響を受け、マッチした行:1143が変更:1143の警告:0
をので、ここですでに何かが右ではありません。選択クエリでは1201レコードが異なりますが、同じ結合および基準を使用して1143レコードのみが変更されましたか?
最初の選択クエリを実行すると、まだ価格が異なる58個のレコードが表示されます。しかし、それを実行するとき、私は最初と同じ1201を取得します。更新がコミットされていないかのようです。
アイデア?
両方のテーブルentrieが同じのIdsを持って – sll
't1.price'と同じタイプの' t2.price'列 – nobody
何sllev手段(と思う)の両方があり、次のとおりです。です両方のテーブルの 'id'主キー?そうでない場合は、その理由 –