- PR -

UPDATE文

1
投稿者投稿内容
まな
常連さん
会議室デビュー日: 2005/10/26
投稿数: 45
投稿日時: 2006-04-22 18:29
お世話になってます。簡単な質問かと思いますが、お願いします。

javaでSQLを実行します。
UPDATEするとき、M001とM002のテーブルを使います。
UPDATE M001 SET M001.名前=M002.名前、 M001.年齢=M002.年齢
WHERE M001.住所=M002.住所 AND M001.貯金=M002.貯金;
このSQL文を実行したいです。
まず、M002をselectで引っ張ってきて、
SELECT 名前、 年齢、 住所、 貯金 from M002;
引っ張ってきた各項目(名前、 年齢、 住所、 貯金)を、変数にいれて、
UPDATE文でその変数を使って実行すればいいのですか?

引っ張ってくる項目が多いときはどうしたらよいでしょうか?
1項目1変数定義してやるしかないのでしょうか。
七味唐辛子
ぬし
会議室デビュー日: 2001/12/25
投稿数: 660
投稿日時: 2006-04-22 19:03
細かいことは忘れましたので、回答はできませんが、とりあえず グーグルでJDBCを
キーワードに検索してください。
着手するまえにJDBCのこと調べましたか?
つばさ
ベテラン
会議室デビュー日: 2005/02/05
投稿数: 54
投稿日時: 2006-04-23 15:50
ためしてはいませんが、以下のようなSQLではだめでしょうか。
UPDATE M001
SET (M001.名前, M001.年齢)
=(SELECT 名前,年齢 FROM M002)
WHERE M001.住所=M002.住所 AND M001.貯金=M002.貯金

Javaでぐるぐるまわすこともできると思いますが、DBMSでできる
ことはそちらに任せたほうがよろしいのではないかと思います。
トロ
会議室デビュー日: 2005/01/23
投稿数: 10
投稿日時: 2006-05-11 00:06
そんなに経験のない私が書き込んでもいいのかという不安もありますが…。

私もDBMSでやった方がいいような気がします。
やっぱり私も試していませんが、こんな感じかなぁと思います。
UPDATE M001
SET (M001.名前, M001.年齢)
=(SELECT M002.名前,M002.年齢 FROM M002 WHERE M001.住所=M002.住所 AND M001.貯金=M002.貯金)
WHERE EXISTS (SELECT * FROM M002 WHERE M001.住所=M002.住所 AND M001.貯金=M002.貯金)

M001の住所と貯金が一致するM002の名前と年齢を抽出し、
M002の住所と貯金が一致するM001の名前と年齢に対し更新する

動かなかったらごめんなさい。
1

スキルアップ/キャリアアップ(JOB@IT)