mysql匹配两个字段_至少两个匹配的字段(mysql)

也许你可以通过一个关系添加另一个列或另一个表,该关系将包含那些包含1值的字段的计数。显然,必须有一些INSERT / UPDATE逻辑,它可以在对现有表的每次更新时执行此操作,也可以在事务中执行:BEGIN UPDATE ...; SELECT FROM表WHERE id = 1和fields_containing_one> 2; COMMIT(以确保隔离任何赛车更新或在您的UPDATE逻辑和您想要的查询之间插入。

我默认假设你的fieldN值可以是0和1以外的数字,并且你只查找精确== 1的那些。如果你知道fieldN值只有0或1那么你可以可能只使用所有fieldN值的SUM。

总的来说,听起来您的表/架构是非规范化的,并且在您继续使用此数据库时可能会导致其他问题。您可以通过使用两列(field_num或attribute_name以及相应的值)来规范化架构,而不是将field1,field2,...用于数据集的每一行。然后代替给定实体的N个字段的一行,每个实体有N行...每个(KEY)+(fieldN,value)元组一个。

在该模式下,您可以添加约束UNIQUE(无论您的现有密钥是+ field_name)(以确保每个实体的每个类型的“field_name”行不超过一个)。

如果那是您的架构,那么您可以执行以下操作:SELECT id FROM(SELECT table WHERE id = 1 AND value = 1)WHERE COUNT(id)> 1(换句话说,在查询中使用子SELECT子句。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值