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