例如,让我们在列source
中说我有以下条目
SourceFileEmbed122
SourceFile1333
SourceItem13366
PreLoadSource7755
我查询SourceFile
它应该匹配第1行和第2行并显示该行的所有列数据,但是如果我搜索示例:PreLoadSource
或SourceItem
它不应该显示任何内容,因为只有一行有类似的条目。
有点像包含某种东西。
基本上,我想做的事情如下:
SELECT source, COUNT(*) TotalCount FROM sources GROUP BY source HAVING COUNT(*) > 1 ORDER BY COUNT(*) DESC
但是查询确实LIKE而不是LIKE%...%(就像在PHPMyAdmin中一样),这导致它只匹配彼此的完全匹配,所以像这样的东西:
row123/
row123
彼此不匹配,将被忽略。但是如果row123的全文全部在另一行的值中,那么我希望这个MATCH基本匹配。然后匹配。
让我说我有:
http://link.ext/dir123/file.mp3
http://link.ext/dir123
http://link.ext/dir123/file2.mp3
http://link.ext/dir123
查询应与.../file.mp3
,.../file2.mp3
和../dir123
匹配,因为第2行http://link.ext/dir123
也位于第1,3和4行。
答案 0 :(得分:1)
测试至少两场比赛的一种方法是:
select s.*
from sources s
where s.source like '%<whatever>%' and
exists (select 1
from source s2
where s2.source like '%<whatever>%' and
s2.source <> s.source
);
答案 1 :(得分:1)
一种方法是使用同一个表进行内连接, 如果你需要一个简单的计数,你可以做这样的事情:
SELECT s1.source, COUNT(*)
FROM sources s1
INNER JOIN sources s2
ON s1.id <> s2.id AND s1.source LIKE CONCAT('%', s2.source, '%')
GROUP BY s1.source