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

标签 mysql request

我有表 Table1 user_id, date Table2 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。 问题是我需要为多个用户执行此操作,因此请求内部请求对我不起作用,它仅在结果为一行时才有效。

最佳答案

我认为你写的应该有用,但是花括号是怎么回事?只需将它们移除即可:

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

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

The ANY keyword, which must follow a comparison operator, means “return TRUE if the comparison is TRUE for ANY of the values in the column that the subquery returns.”

When used with a subquery, the word IN is an alias for = ANY.

关于来自两个相互交互的表的 MySQL 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7828667/

相关文章:

PHP mysql 在一个目标中显示 4 个结果

mysql - 从表中获取最新数据

mysql - 当我输入 Postgres 命令时,我的 mysql 客户端似乎是 'break'。任何想法如何撤消这个?

python - 我正在尝试安装 python 模块 HTTP

javascript - Node JS 请求以字符串形式返回

mysql - LEFT JOIN 条件中键的顺序

php - Codeigniter 表单提交并上传文件

ios - 在 applicationWillTerminate 中发送请求

javascript - 同步运行函数

javascript - 如何捕获状态失败的发布请求?