2011-12-20 60 views
0

我将“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 2011-12-20 09:00:29

+0

您希望查询的内容是什么?你想更新一列,条件是表中的img_id更新与puri和mailraku表中的img_id匹配? – Shades88 2011-12-20 09:03:29

+0

我想更新集合中具有IMG_ID的tr_lines_alls表的ACT_FLG。该组包括两个临时表。临时表只有一个列表IMG_ID。 – Emerald214 2011-12-20 09:58:34

回答

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 WHERE IMG_ID IN((选择IMG_ID FROM puri)UNION(SELECT IMG_ID FROM mailraku)); - “UNION(SELECT IMG_ID FROM mailraku)”附近的错误语法);“ – Emerald214 2011-12-20 09:55:43

+0

看起来'UNION'查询必须是单表格表达式中的包装。我更新了答案。现在就试试。 – 2011-12-20 09:59:16

+0

我尝试这样做: UPDATE tr_lines_alls SET ACT_FLG = 0 WHERE IMG_ID IN (SELECT IMG_ID FROM \t(SELECT IMG_ID距离Puri)UNION(SELECT IMG_ID FROM mailraku)AS温度 ); - 错误“#1248 - 每个派生表都必须有自己的别名” – Emerald214 2011-12-20 10:08:00

-1

你要这样呢? IN运算符不会仅使用临时列的值或列名称。 如果要更新上,在桌子img_id更新与img_id布里和mailraku表的匹配条件表,则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”的行,我认为这不是用户想要的。 – 2011-12-20 09:32:32

+0

是的,那么我的回答是不正确的。但我可怜的2分。 ;) – Shades88 2011-12-20 09:36:10