mysql - 在 SQL 中的同一字段(不是不同的字段)上同时使用(或)和(和)操作
问题描述
我有三张表,多对多关系
如果我插入数据,表格将如下所示
我想获取产品名称,其中 (propertyValue='ios' or propertyValue = 'android') 和 (propertyValue='black')
换一种方式,我们可以说
我想在 (propertyid='2' 或 propertyid = '4') 和 (propertyid='3') 处获取产品名称
我尝试了第二种方法,并且有一个 SQL:
Select DISTINCT(p.productname),p.productid
from Products p
left join Product_propertyvalue ppv on p.productid=ppv.productid
where ( ppv.propertyvalueid=2 or ppv.propertyvalueid=4) and ( ppv.propertyvalueid=3 )
解决方案
您可以使用having
:
select p.productname, p.productid
from Products p left join
Product_propertyvalue ppv
on p.productid = ppv.productid
group by p.productname, p.productid
having sum( ppv.propertyvalueid in (2, 4) ) > 0 and
sum( ppv.propertyvalueid = 3 ) > 0;
sum()
条件检查给定产品的每个属性是否存在。
推荐阅读
- python - 根据熊猫中的条件交换列值
- android - 如何从android中的相机获取图像
- javascript - CommanderJS - 验证参数
- java - android正则表达式提取数据的问题-日志上的PID
- javascript - javascript使函数参数动态化
- dart - 检查嵌套的 Dart Map 是否存在空值
- javascript - 在对象数组中选择唯一项
- html - 有没有办法在锚标签中有按钮,就像另一个链接?
- javascript - 如何更改“progress[value]::-webkit-progress-value”属性的颜色?
- java - 如何在属性视图表条目中包装工具提示