Php MYSQL:使用LIKE的子查询

Php MYSQL:使用LIKE的子查询,php,mysql,sql,Php,Mysql,Sql,大家好,我想知道我如何才能实现对总成员的输出 这是一个问题 SELECT field1, field2, (select count(*) from table2 as t2 where t2.field5 LIKE '%' + t1.field2 + '%') as total_row FROM table1 as t1 ORDER BY total_row DESC 我想知道如何嵌入like语句,因为field5有一个或多个

大家好,我想知道我如何才能实现对总成员的输出

这是一个问题

SELECT 
     field1,
     field2,
     (select count(*) 
       from table2 as t2 
       where t2.field5 LIKE '%' + t1.field2 + '%') as total_row 
FROM table1 as t1 ORDER BY total_row DESC
我想知道如何嵌入like语句,因为field5有一个或多个用逗号分隔的数据作为字符串

例:field5有“猫、狗、老鼠”

所以field2正在寻找像“狗”这样的总行数


希望您能帮助我。

假设逗号后没有空格,您需要执行以下操作:

select field1, field2, (
        select count(*)
        from table2 as t2
        where t2.field5 = t1.field2
            or t2.field5 like t1.field2 + ',%'
            or t2.field5 like '%,' + t1.field2 + ',%'
            or t2.field5 like '%,' + t1.field2
        ) as total_row
from table1 as t1
order by total_row desc

在每个字段的前面和后面连接逗号:

SELECT field1
      ,field2
      ,( SELECT COUNT(*) 
         FROM table2 as t2 
         WHERE ','+t2.field5+',' LIKE '%,' + t1.field2 + ',%') as total_row 
FROM table1 as t1 ORDER BY total_row DESC
不确定上述功能是否在MySQL中工作,可能需要
CONCAT()


请记住,在大型表上,类似通配符的搜索速度非常慢(因为它们必须搜索表的全部内容)。在某个时候,您需要将这个“tag”字段拆分成一个单独的表。
SELECT field1
      ,field2
      ,( SELECT COUNT(*) 
         FROM table2 as t2 
         WHERE CONCAT(',',t2.field5,',') LIKE CONCAT('%,',t1.field2,',%') as total_row 
FROM table1 as t1 ORDER BY total_row DESC