2

これを行うためのmysqlクエリを探しています:

私はテーブルを持っています:コア

id tag
1  GameAnimal
2  Game
3  AbstractGame
4  AbstractAnimal
5  GameAbstract

今、次のような値をカウントする結果が必要です

Game     : 4
Animal   : 2
Abstract : 3

私は、次のように mysql の in 関数を使用して同様のことを行いました。

select tag, count(*) as count from core where tag in('Game','Abstract') group by tag

それは私に結果を与えました

Game : 1

上記のクエリは文字に一致し、応答を返します。GameAnimal は Game と等しくないため、結果に含まれていないため、ここではワイルドカードは役に立ちません。

そのようなクエリが不可能な場合は、単一のクエリ呼び出しでこれを行う方法を提案してください。

4

3 に答える 3

3

または、次のようにすることもできます (クエリを動的に作成できると仮定します)。

select 
  count(if(tag like '%Game%', 1, null)) AS Game_Count, 
  count(if(tag like '%Animal%', 1, null)) AS Animal_Count, 
  count(if(tag like '%Abstract%', 1, null)) AS Abstract_Count 
from 
  core

またはunion、結果を列として取得する必要がある場合は構文を使用します (これは、タグの量が多い場合に役立ちます)

于 2013-08-14T13:00:34.210 に答える
0
SELECT 
(SELECT count(*) from `table` where tag like '%game%') as 'game', 
(SELECT count(*) from `table`  where tag like '%animal%') as 'animal', 
(SELECT count(*) from `table`  where tag like '%abstract%') as 'abstract' 
于 2013-08-14T13:23:53.413 に答える