MySQL:基于同列匹配值更新指定分组的visible字段
解决方法
这个需求用自连接就能轻松搞定,直接上具体的SQL语句:
UPDATE your_table AS t_group3 JOIN your_table AS t_group1 ON t_group3.prop_id = t_group1.prop_id SET t_group3.visible = 0 WHERE t_group3.group_id = 3 AND t_group1.group_id = 1 AND t_group3.value = t_group1.value;
逻辑拆解
- 我们把同一张表当成两个独立的数据集来处理:
t_group3专门指代group_id=3的记录,t_group1指代group_id=1的记录。 - 通过
prop_id做关联,确保我们对比的是同一个属性下的两组数据,不会跨属性乱匹配。 - 最后通过
WHERE条件精准锁定目标:只更新group_id=3的记录,且这些记录的value必须和同prop_id下group_id=1的value完全相等,然后把符合条件的记录的visible设为0。
拿你给的测试数据举例,执行完这条语句后,prop_id=2、group_id=3那行的visible就会变成0,完全符合你的需求~
内容的提问来源于stack exchange,提问作者Laci K
相关产品推荐
相关产品推荐

