- PR -

update文の作り方

1
投稿者投稿内容
Horino
会議室デビュー日: 2008/03/14
投稿数: 2
投稿日時: 2008-03-14 18:44
次の表があります。
  表:T id name
1 aa
2 bb
5 ff
表:M id name col
1 AA null
2 BB null
3 CC null

4 DD null
この表からidが共通のレコードに対して表Mのcolにマーク(*)を入れる。
欲しい結果は
表:M id name col
1 AA *
2 BB *
3 CC null
4 DD null
SQL文で

UPDATE M SET col='*' WHERE M.id = ALL ( SELECT T.id FROM T, M WHERE T.id = M.id)

と書いて実行しましたが、何の結果も得られませんでした。
なお、HSQLDB(openoffice Base)を使っています。   
ノラ
常連さん
会議室デビュー日: 2003/11/06
投稿数: 37
お住まい・勤務地: 東京都
投稿日時: 2008-03-14 18:58
UPDATE M SET col='*' WHERE EXISTS ( SELECT 1 FROM T WHERE T.id = M.id)
じゃないでしょうか。
nikori
会議室デビュー日: 2008/03/13
投稿数: 11
投稿日時: 2008-03-14 19:10
自分は次のようにやってみました(HSQLDB)。
コード:
update
  M
set
  col = '*'
where
  id in (
    select
      id
    from
      T
  )
;

Horino
会議室デビュー日: 2008/03/14
投稿数: 2
投稿日時: 2008-03-15 14:46
お教えいただきましてありがとうございます。ALLではなく、IN という句をつかうのでした。
また、EXISTS ( SELECT 1 ... という方法があることには、目からウロコでした。
1

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