从一个表中筛选包含多条数据的条件查询

需求如下:

a商店有:1,2,3,4,5,6标识
b商店有:1,5,6标识
c商店有:4,5,6标识
每个标识都有一条记录
每条记录如下:
a-->1
a-->2
a-->3
a-->4
a-->5
a-->6
b-->3
b-->5
b-->6
c-->4
c-->5
c-->6
那么我现在要收索同时拥有标识有4,5,6的商店:搜出来的商店应该是 a 跟c
怎么搜,怎么写sql语句啊


解决方法如下:


1:SELECT shop_id FROM t_shop_hardware WHERE hardware_id IN (2,3,4,5,6)  AND is_del =1 GROUP BY shop_id  HAVING COUNT(DISTINCT hardware_id) = 5


2:
SELECT shop_id FROM
(SELECT GROUP_CONCAT(DISTINCT hardware_id) hardware_id,shop_id FROM t_shop_hardware WHERE is_del = 1 GROUP BY shop_id) a
WHERE FIND_IN_SET('2', a.hardware_id) AND FIND_IN_SET('3', a.hardware_id) AND FIND_IN_SET('4', a.hardware_id) AND FIND_IN_SET('5', a.hardware_id) AND FIND_IN_SET('6', a.hardware_id);

3:也可以用find_in_set() 函数来执行

select * from t_shop where find_in_set(hardware,'2,3,4,5');


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值