我正在尝试编写一个使用多个关键字进行搜索的选择语句。例如
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.