首页 > 解决方案 > MySQL更新表列比较两个表

问题描述

Users table has following columns
-----------------------------------
Users isMember
A     Yes
B     Yes
C     Yes
X     Yes
Y     Yes
Z     Yes

ValidSubcription table the following details
-------------------------
Users  isSubActive
A      Yes  
X      Yes
Y      Yes

现在,基于此详细信息,我想更改 Users 表中的 isMember 列,并将 ValidSubscription 表中不存在的用户从 Yes 设置为 No。

output should be like this

Users isMember
A     Yes
B     No
C     No
X     Yes
Y     Yes
Z     No

标签: mysql

解决方案


您可以使用 更新您的表LEFT JOIN,这将更新 Users 表中的所有行,即使它们在 ValidSubscription 表中没有相应的行。

isMember 的更新使用COALESCEwhich 将使用 isSubActive 的值(如果该行存在),如果不存在则使用“否”。

UPDATE Users u
LEFT JOIN ValidSubscription s
  ON u.Users = s.Users
SET isMember = COALESCE(isSubActive, 'No')

一个用于测试的 SQLfiddle。

...并且始终,在运行互联网上随机人员提供给您的更新之前备份您的数据;)


推荐阅读