次のクエリがあります。
SELECT name, GROUP_CONCAT(job SEPARATOR ','),
count(*) FROM users GROUP BY name ORDER BY name ASC
''を含まないジョブフィールドのみを連結することは可能ですか?その場合、その方法は?「ジョブ」がないものが必要なため、WHERE句を実行できません。
次の表を想像してください。
+-------+----------+
| name | job |
+-------+----------+
| Bob | doctor |
| Bob | teacher |
| Frank | dentist |
| Tom | |
| Tom | |
| Tom | |
| Tom | |
| Tom | salesman |
+-------+----------+
現在のクエリの結果は次のようになります。
+--------+---------------------------------+----------+
| name | GROUP_CONCAT(job SEPARATOR ',') | count(*) |
+--------+---------------------------------+----------+
| Bob | doctor, teacher | 2 |
| Frank | dentist | 1 |
| Tom | ,,,,salesman | 5 |
+--------+---------------------------------+----------+
しかし、私はそれを次のようにしたいと思います。
+--------+---------------------------------+----------+
| name | GROUP_CONCAT(job SEPARATOR ',') | count(*) |
+--------+---------------------------------+----------+
| Bob | doctor,teacher | 2 |
| Frank | dentist | 1 |
| Tom | salesman | 5 |
+--------+---------------------------------+----------+
(このテーブルのロジックは気にしないでください。これは、物事を明確にするための単純な例にすぎません)
この理由は、phpでGROUP_CONCAT(job SEPARATOR'、')をexplode()するためです。実際のテーブルでは、1000の役に立たない,,'が簡単に存在するため、explode関数が非常に遅くなります。ありがとう、
lordstyx。