Mysql怎样求对同一个表的多个查询的交集???

时间:2021-04-04 15:08:19
突然发现,mysql不支持intersect,我现在想实现对同一个表的多个查询的结果的交集,就是排除掉几个查询结果中不同的部分,有什么比较好的解决办法呢?

比如 表A:

id    keywords
1   小猫 小狗 大鱼
2   小熊 小猫 小兔子
3   小鸟 小狗 小猫
4   小狗 小熊 大鱼

执行select * form A where keywords like '%小猫%';  返回:

id    keywords
1   小猫 小狗 大鱼
2   小熊 小猫 小兔子
3   小鸟 小狗 小猫

执行 select * form A where keywords like '%小狗%';

id    keywords
1   小猫 小狗 大鱼
3   小鸟 小狗 小猫
4   小狗 小熊 大鱼

想取其中的交集得到

id    keywords
1   小猫 小狗 大鱼
3   小鸟 小狗 小猫

如何实现呢?各位???多谢了!

6 个解决方案

#1


查询1:
select * form A where keywords like '%小猫%'
查询2:
select * form A where keywords like '%小狗%'

select * from 查询1 a inenr join 查询2 on a.keywords=b.keywords

#2


直接用LIKE '%小猫%' AND LIKE '%小狗%'不行?

#3


TO 2L

select * from  (select * from A where keywords like '%小猫%') AS a inner join (select * from A where keywords like '%小狗%') AS b a.keywords=b.keywords;
这样可以成功

直接用LIKE '%小猫%' AND LIKE '%小狗%'试过,不行。

如果不只两个查询怎么办?这里关键字是两个,如果是三个或更多,有无办法取到交集?

#4


直接用LIKE '%小猫%' AND LIKE '%小狗%'试过,不行。

SELECT * from tt1 where keywords LIKE '%小猫%' AND [keywords] LIKE '%小狗%'
得到1、3记录

#5


可以了,上次可能是语法不对,谢谢LS的~

#6


呵呵,解决了吗?结贴吧

#1


查询1:
select * form A where keywords like '%小猫%'
查询2:
select * form A where keywords like '%小狗%'

select * from 查询1 a inenr join 查询2 on a.keywords=b.keywords

#2


直接用LIKE '%小猫%' AND LIKE '%小狗%'不行?

#3


TO 2L

select * from  (select * from A where keywords like '%小猫%') AS a inner join (select * from A where keywords like '%小狗%') AS b a.keywords=b.keywords;
这样可以成功

直接用LIKE '%小猫%' AND LIKE '%小狗%'试过,不行。

如果不只两个查询怎么办?这里关键字是两个,如果是三个或更多,有无办法取到交集?

#4


直接用LIKE '%小猫%' AND LIKE '%小狗%'试过,不行。

SELECT * from tt1 where keywords LIKE '%小猫%' AND [keywords] LIKE '%小狗%'
得到1、3记录

#5


可以了,上次可能是语法不对,谢谢LS的~

#6


呵呵,解决了吗?结贴吧