查询效率.contains

时间:2014-01-06 17:22:56

标签: mysql sql linq

我想找到查询下表的最有效方法:Psuedo代码很好

City     Name    Comment               Mentioned

Tampa    Steve   "I don't like Jim"
Tampa    Jim     "Who is Steve"
Lincoln  Sarah   "Where is Angie"
Lincoln  Angie   "Hi Sarah"

我想找到一个城市的人提到同一个城市的其他人。有大量数据,所以我需要最有效的方法。我知道如何以多种方式编写查询,但我正在寻找最好的方法。所以基本上史蒂夫"提及"吉姆,但如果史蒂夫提到萨拉那是不相干的,因为他们不是来自同一个城市。我在寻找LINQ或SQL。 注意: Jim可能有20条不同的评论,这就是为什么我不确定在评论中搜索作者之前是否应该创建一个不同的列表。 提前致谢

1 个答案:

答案 0 :(得分:0)

select  t.Name, t1.Name Mentioned
from table t
inner join table t1 on t.City = t1.City
where t.Comment like '%' + t1.Name + '%'

不是MySql用户,所以我不知道这是否对MySql有效,但是对于其他数据库。

讨论后添加:

select t1.City, t1.Name, names.Name Mentions
from table t1
cross join
(
    select distinct x.Name, x.City
    from table x
) names
where names.Name <> t1.Name
and t1.Comment like '%' + names.Name + '%'

(这是SQL Server语法。根据需要进行调整。)