如何创建将以这种方式检查与表的比较的查询,而不是需要两个或多个匹配,无论哪个匹配但不相同。我想过创建一个重复的列
Col1 Col2
A A
B B
C C
并检查两者:
LIKE CONCAT('%',table.col1,'%')
和LIKE CONCAT('%',table.col2,'%')
我只是不确定如何确保第二个LIKE
不等于第一个,因为它们相同,因此上述两个语句都将返回正数。但我需要标记像AB而不是AA
答案 0 :(得分:1)
使用这种方法,您可以添加另一个AND
子句来强制执行此操作:
-- ...
WHERE foo LIKE CONCAT('%',table.col1,'%')
AND foo LIKE CONCAT('%',table.col2,'%')
AND table.col1 <> table.col2
我不确定使用重复列是最好的方法。
答案 1 :(得分:0)
好的,尝试这样的事情:
select s.*
from sentences s join
words w
on s.sentence like concat('%', w.word, '%')
group by s.sentence
having count(*) > 1
这是连接以获取匹配,然后过滤掉少于两个匹配的句子。
s.*
与group by s.sentence
一起使用称为隐藏列的MySQL(mis)功能,在这种情况下可能很有用。