Mysql select语句中的动态变量

Mysql select语句中的动态变量,mysql,select,Mysql,Select,我正在尝试编写一个select语句,它使用多个关键字进行搜索。比如说 SELECT id FROM my_mod mm WHERE (mm.name LIKE '%joe%' OR mm.name LIKE '%jim%'); 我想做的是在返回数据中有一个额外的列,它统计行与一个类似语句匹配的次数 因此,对于上面的一个,如果有一个名字jimjoe,它将有一个计数2,或者如果名字是jim,它将有一个计数1。有人知道这样做的方法吗 我还应该提到,我不能使用临时表。试试这个查询- SELECT id

我正在尝试编写一个select语句,它使用多个关键字进行搜索。比如说

SELECT id FROM my_mod mm WHERE (mm.name LIKE '%joe%' OR mm.name LIKE '%jim%');
我想做的是在返回数据中有一个额外的列,它统计行与一个类似语句匹配的次数

因此,对于上面的一个,如果有一个名字
jimjoe
,它将有一个计数2,或者如果名字是
jim
,它将有一个计数1。有人知道这样做的方法吗

我还应该提到,我不能使用临时表。

试试这个查询-

SELECT id, 
       CASE 
         WHEN mm.name LIKE '%joe%' 
              AND mm.name LIKE '%jim%' THEN 2 
         ELSE 1 
       end AS cnt 
FROM   my_mod mm 
WHERE  mm.name LIKE '%joe%' 
        OR mm.name LIKE '%jim%' 
SELECT
  COUNT(IF(name LIKE '%joe%', 1, NULL)) joe_count,
  COUNT(IF(name LIKE '%jim%', 1, NULL)) jim_count
FROM
  my_mod
WHERE
  name LIKE '%joe%' OR name LIKE '%jim%'
试试这个

select t.id,count(*) FROM
((select id from my_mod where name like '%jim%')
union all
(select id from my_mod where name like '%joe%')) t group by t.

Hi,感谢您的快速响应,但我要做的是返回与like语句匹配的每一行,再加上一个额外的列,该列有与该特定行匹配的like语句的数量计数。Hi,这将返回每一列,但计数是总匹配数,我需要的是如果行名为“joe”然后它将有一个计数1,如果下一行是“jimjoe”,它将有一个计数2。@cs1h,试试这个sql脚本。此查询效率更高,因为该查询只扫描表一次。@cs1h-不确定您的要求有多小,但是,使用上面的
explain查询
我知道这是最佳选择+1至OA