我有以下查询:
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中explode() GROUP_CONCAT(job SEPARATOR ','),而在实际的表中,很容易有1000个无用的,,'s,这会使explode函数非常慢。谢谢,
勋爵。