2011-12-20 15 views
0

私は、2つの一時テーブルとして "puri"と "mailraku"を持っています。このクエリを修正するには? "IN"に関するドキュメントには言及していません。IN演算子を一時テーブルで使用する方法

UPDATE tr_lines_alls 
SET ACT_FLG = 0 
WHERE IMG_ID IN (puri, mailraku); 

エラーは言う:

Unknown column 'puri' in 'where clause' 
+0

プリとmailrakuのテーブル構造は何ですか? INには一連の値またはサブクエリが必要です – codeling

+0

クエリには何をしたいですか? puriとmailrakuテーブルのimg_idとの一致を更新するために、テーブルのimg_idという条件でカラムを更新したいですか? – Shades88

+0

IMG_IDをセットにしたtr_lines_allsテーブルのACT_FLGを更新します。このセットには2つの一時テーブルが含まれています。一時テーブルには列IMG_IDが1つしかありません。 – Emerald214

答えて

3

INオペレータは、テーブルのためではなく、値のリストのために!あなたはこのような何かをしたいですか

UPDATE tr_lines_alls 
SET ACT_FLG = 0 
WHERE IMG_ID IN (
    SELECT * FROM (
     (SELECT yourcolumn FROM puri) UNION 
     (SELECT yourcolumn FROM mailraku) 
    ) AS tmp_union 
); 
+0

私はあなたの解決策を試しました: UPDATE tr_lines_alls SET ACT_FLG = 0 どこのIMG_ID IN((IMG_ID FROM puri)UNION(SELECT IMG_ID FROM mailraku)); - 「UNION(SELECT IMG_ID FROM mailraku)」の近くのエラー構文; – Emerald214

+0

UNIONクエリは単一テーブル式のラッパーでなければならないようです。私は答えを更新しました。やってみよう。 –

+0

私はこれを試みた: UPDATEは、SET ACT_FLG IN IMG_IDは( \t(プリFROM IMG_ID選択)UNION(mailraku FROM IMG_ID選択)TEMP AS FROM IMG_IDを選択)= 0 をtr_lines_alls。 - エラー "#1248 - すべての派生テーブルには別のエイリアスが必要です" – Emerald214

-1


たぶんとして何かが必要? IN演算子は、一時列を値または列名のみとしません。 あなたがプリとmailraku表にimg_idとの一致を更新するために、テーブルにimg_id条件であなたのテーブルを更新したい場合は、uはこれを試すことができます。

UPDATE tr_lines_alls 
SET ACT_FLG = 0 
WHERE tr_lines_alls.IMG_ID = puri.IMG_ID and tr_lines_alls.IMG_ID = mailkaru.IMG_ID 
+0

'puri'テーブルと' mailkaru'テーブルがいずれのステートメントでもロードされていないため、そのコードは機能しません。さらに、これらのテーブルをロードしてそのクエリを使用すると、両方のテーブルに一致する 'IMG_ID'を持つ行を更新します。これは、ユーザが望むものではないと思います。 –

+0

はい、私の答えは間違っています。しかし、私の貧しい2点。 ;) – Shades88

関連する問題