问题描述
A表:idtagname1很长很长的字符2无关的字符3非常长的字符 B表:idnavname1长的2短的 我希望找出,A表中的数据没有(模糊)包含B表的:也就是红色那条记录 我第一时间想到这样写:SELECT * from A a where a.tagname not like (SELECT b.navname from B b) 但是会出错:Subquery returns more than 1 row 求各位指导.
解决方案
select * from A a where not exists (SELECT 1 from B b where locate(b.navname,a.tagname) > 0)应该是这个,不能直接用like的
解决方案二:
用like 好像不恰当。理解,去找出a数据中不包含b的就行了。select * from a a where not exists(select 1 from b b where find_in_set(a.idtagname,b.idtagname));
解决方案三:
select * from A a where exists (select 1 from B b where a.idtagname not like b.idnavname)
时间: 2024-10-24 09:44:24