mysql - 查询效率.contains

标签 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 条不同的评论,这就是为什么我不确定在评论中搜索作者之前是否应该创建一个不同的列表。 提前致谢

最佳答案

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语法。根据需要进行调整。)

关于mysql - 查询效率.contains,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20955561/

相关文章:

mysql - 在 MySQL 中缓存行排名?

MySQL删除两个括号之间的字符

mysql - 如何将 .sql 文件转换为 mysql 数据库中的表

c# - 将 IEnumerable 对象列表转换为对象数组列表 C#

mysql无法显示解释数据

mysql - 使用子查询的 SQL

mysql - MySQL 中复杂的 COUNT 查询

显示在至少十个不同地方(位置)参加过比赛的运动员人数的 SQL 查询

asp.net - 带有 LinqDataSource 和空选项的 DropDownList

c# - 使用 .Contains 保留 LINQ 的顺序