1

次のような値を持つ MySQL テーブルに「ColorCode」という名前のフィールドがあります。

28373 GYY green
23423 HH red
23423 HH green  
2343 QWE red    
SKDJF blue  
green

各色の出現回数を示す SQL ステートメントは、次の PHP に影響された擬似コードのようになります。

SELECT COUNT(*) FROM products GROUP BY END(EXPLODE(ColorCode));
4

2 に答える 2

4

醜いが、このようなもの

group by RIGHT(ColorCode, LOCATE(' ', REVERSE(ColorCode))

このクエリを頻繁に実行している場合は、その「最後の」値を独自のフィールドに分割して、少なくともインデックスを作成できるようにすることを必ず検討してください。大きなテーブルでは、パフォーマンスが著しく低下します。

于 2012-11-23T15:28:17.673 に答える
1

これはどう:

GROUP BY SUBSTRING_INDEX(ColorCode,' ',-1);

ただし、これは最後の例では機能しません。

明らかに、最後の例で機能します! :D

ここにデモンストレーションがあります: http://sqlfiddle.com/#!2/d41d8/4088

于 2012-11-23T15:30:14.530 に答える