select语句中的动态变量

时间:2012-05-23 10:46:28

标签: mysql select

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

SELECT id FROM my_mod mm WHERE (mm.name LIKE '%joe%' OR mm.name LIKE '%jim%');

我想要做的是在返回数据中有一个额外的列,用于计算该行与其中一个类似语句匹配的次数。

因此,对于上面的名称jimjoe,如果名称为{2},或者名称为jim,则计数为1.有没有人知道如何通过这样做?

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

3 个答案:

答案 0 :(得分:2)

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%' 

答案 1 :(得分:1)

尝试此查询 -

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%'

答案 2 :(得分:0)

试试这个

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.

I check here how it works

相关问题