来自两个表的MySQL请求相互交互

时间:2011-10-19 21:53:07

标签: mysql request

我有的表 表1 user_id, date 表2 user_id, status

我需要像

这样的东西
UPDATE Table2 
   SET status = 2  
   WHERE user_id in ( {SELECT user_id FROM Table1 WHERE date > 0} )

换句话说,我需要查看table1中的日期是否超过0000-00-00,然后抓住符合此条件的人的user_id,并在table2中使用它们将其状态设置为2。 问题是我需要为多个用户执行此操作,因此请求内部请求对我不起作用,它仅在结果中有一行时才有效。

2 个答案:

答案 0 :(得分:1)

我认为你写的东西应该有效,但花括号是什么?只需删除它们就可以这样:

UPDATE Table2 
   SET status = 2  
   WHERE user_id in (SELECT user_id FROM Table1 WHERE date > 0)

根据MySQL documentation,IN应该使用子查询。

  

ANY关键字必须跟随比较运算符,意味着“如果子查询返回的列中的任何值的比较为TRUE,则返回TRUE。”

     

当与子查询一起使用时,单词IN是= ANY的别名。

答案 1 :(得分:0)

您使用PHP或其他语言进行SQL调用吗?如果是这样,那可能更容易,

  • 首先:从表1中选择用户ID
  • 其次:遍历每一行
  • 第三:执行更新

此致 标记