- 締切済み
SQLでレコード間の値の交換
MySQLを利用しています。 テーブルにIntegerでそのレコードの内容の優先度を書いていますが、 これを早く交換するのにはどのような書き方がよいのでしょうか。 例えば、 |No|YUSEN|NAIYO | |01| 1|自動車| ←ここと |02| 2|飛行機| |03| 3|船舶 | ←ここのYUSENの値を交換したい ↓ |No|YUSEN|NAIYO | |01| 3|自動車| |02| 2|飛行機| |03| 1|船舶 | と行った具合です。 よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
回答No.2
>Noの01と03のYUSENを入れ替えなさい UPDATE hoge as h1,hoge as h2 SET h1.YUSEN=h2.YUSEN WHERE (h1.No='01' AND h2.No='03') OR (h1.No='03' AND h2.No='01');
- yambejp
- ベストアンサー率51% (3827/7415)
回答No.1
なにをキーにYOUSEが1や3だということを知るのでしょうか? そのあたりの定義があいまいだと回答ができません。
質問者
補足
YUSEN(優先度)が決められているのですが、 それを、変更するという処理です。 指示されるのは、Noの01と03のYUSENを入れ替えなさい という処理です。
補足
yambejp様 お礼が遅くなってすみません。 実は、SQLサーバーがMicrosoft SQL Server 2005 Express Editionに、 命令が「Noの01と03のYUSENを入れ替えなさい」から「YUSENの01と03 を入れ替えなさい」というように変わってしまいました。 試行錯誤しているのですが、「'as' 付近に不適切な構文があります」 と出てしまい困っています。 (MS-SQLではだめでしょうか?) 教えていただいたのは、テーブルをAS句で2つの名前で持って処理を するということだと思いますが、これは一般的なSQLの書き方と思っ てよいのでしょうか? (テーブル名はTB_YUSENでした) すみません。よろしくお願い致します。