sql一列有多值查询,根据多个只查询我想要的数据
答案:3 悬赏:20
解决时间 2021-02-14 07:12
- 提问者网友:箛茗
- 2021-02-13 07:17
sql一列有多值查询,根据多个只查询我想要的数据
最佳答案
- 二级知识专家网友:过活
- 2021-02-13 07:48
个人认为两种办法
(1)每一个条件查询一次,然后取交集。oracle中通过INTERSECT实现。和union的用法一样。其他的数据库我就不知道了。
(2)我观察了一下你的数据,每个都有41,42,43,44,而后都是按照顺序排列的。
那么直接group by sonItemID,将propertyValueID字段合并,只要结果是1358的,那么就显示,否则不显示,那么就应该可以。如果害怕有的不是也进来捣乱,那么就将两个字段合并为411,423,435,448,这样就可以了,排序后合并应该就不会出现问题了。
追问:给了我思路,解决了
(1)每一个条件查询一次,然后取交集。oracle中通过INTERSECT实现。和union的用法一样。其他的数据库我就不知道了。
(2)我观察了一下你的数据,每个都有41,42,43,44,而后都是按照顺序排列的。
那么直接group by sonItemID,将propertyValueID字段合并,只要结果是1358的,那么就显示,否则不显示,那么就应该可以。如果害怕有的不是也进来捣乱,那么就将两个字段合并为411,423,435,448,这样就可以了,排序后合并应该就不会出现问题了。
追问:给了我思路,解决了
全部回答
- 1楼网友:煞尾
- 2021-02-13 08:54
select sonItemID from 表名 where propertyNameID in (41,42,43,44) andpropertyValueID in (1,3,5,8)
追问:你这种不是差满足所有条件的,而是只要包含这几个值得就都会查出来。
我要的sql 是满足我上面的那个条件后 只会查询出来一个sonItemID
追答:select sonItemID from 表名 where (propertyNameID in (41) andpropertyValueID in (1))
or (propertyNameID in (42) andpropertyValueID in (3)) or (propertyNameID in (43) andpropertyValueID in (5)) or (propertyNameID in (44) andpropertyValueID in (8))
追问:你这种不是差满足所有条件的,而是只要包含这几个值得就都会查出来。
我要的sql 是满足我上面的那个条件后 只会查询出来一个sonItemID
追答:select sonItemID from 表名 where (propertyNameID in (41) andpropertyValueID in (1))
or (propertyNameID in (42) andpropertyValueID in (3)) or (propertyNameID in (43) andpropertyValueID in (5)) or (propertyNameID in (44) andpropertyValueID in (8))
- 2楼网友:轻熟杀无赦
- 2021-02-13 08:20
SELECt sonItemID FROM 表名 WHERe propertyNameID IN (41,42,43,44) OR propertyValueID IN (1,3,5,8)
//已改,不知道是否能满足你的需求!
//已改,不知道是否能满足你的需求!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |