双喜检查

时间:2013-01-07 22:13:06

标签: mysql

如何创建将以这种方式检查与表的比较的查询,而不是需要两个或多个匹配,无论哪个匹配但不相同。我想过创建一个重复的列

Col1 Col2
 A    A
 B    B
 C    C

并检查两者: LIKE CONCAT('%',table.col1,'%')LIKE CONCAT('%',table.col2,'%') 我只是不确定如何确保第二个LIKE不等于第一个,因为它们相同,因此上述两个语句都将返回正数。但我需要标记像AB而不是AA

这样的项目

2 个答案:

答案 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)功能,在这种情况下可能很有用。