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

发布于 2024-12-11 04:23:31 字数 399 浏览 0 评论 0原文

我有的桌子 表1 user_id,日期 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。 问题是我需要为多个用户执行此操作,因此请求内的请求对我不起作用,它仅在结果中有一行时才起作用。

Tables i have
Table1 user_id, date
Table2 user_id, status

I need something like

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

In other words i need to see if date in table1 is more than 0000-00-00 then grab user_id of people who match this criteria and use them in table2 to set their status to 2.
Problem is that i need to do it for more than one user so request inside request does not work for me, it only works when there's one row in result.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

安静被遗忘 2024-12-18 04:23:31

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

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

根据 MySQL 文档,IN 应该与子查询一起使用。

ANY 关键字必须跟在比较运算符之后,表示“如果子查询返回的列中的任何值的比较结果为 TRUE,则返回 TRUE。”

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

I think what you've written should work, but what's with the curly braces? Just remove them to make it like this:

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

According to the MySQL documentation, IN should work with a subquery.

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.

扶醉桌前 2024-12-18 04:23:31

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

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

问候,
标记

Are you using PHP or some other language to make SQL calls? If so, it might easier to just,

  • firstly: select user ids from table 1
  • secondly: loop through each row
  • thirdly: execute the update

Regards,
Mark

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文