我正在尝试编写一个使用多个关键字进行搜索的select语句。例如
SELECT id FROM my_mod mm WHERE (mm.name LIKE '%joe%' OR mm.name LIKE '%jim%');
我想要做的是在返回数据中有一个额外的列,用于计算该行与其中一个类似语句匹配的次数。
因此,对于上面的名称jimjoe
,如果名称为{2},或者名称为jim
,则计数为1.有没有人知道如何通过这样做?
我还应该提到我不能使用临时表。
答案 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.