2

複数のキーワードを使用して検索する select ステートメントを作成しようとしています。例えば

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

私がやりたいことは、戻りデータに、行が like ステートメントの 1 つと一致する回数をカウントする追加の列があることです。

したがって、上記の場合、名前jimjoeがある場合はカウントが2になり、名前がある場合はjimカウントが1になります。これを行う方法を知っている人はいますか?

また、一時テーブルを使用できないことにも言及する必要があります。

4

3 に答える 3

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%' 
于 2012-05-23T10:48:19.370 に答える
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%'
于 2012-05-23T10:56:52.573 に答える
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.

私はそれがどのように機能するかをここでチェックします

于 2012-05-23T11:03:00.440 に答える