c_id c_name
10001 沙
10001 石
10001 煤
10002 沙
10002 水
10002 盐 查询如何写查询条件 显示结果如下 表名goods 10001 沙 石 煤
10002 沙 水 盐 请大大赐教
10001 沙
10001 石
10001 煤
10002 沙
10002 水
10002 盐 查询如何写查询条件 显示结果如下 表名goods 10001 沙 石 煤
10002 沙 水 盐 请大大赐教
SELECT c_id,GROUP_CONCAT(c_name) c_names FROM goods GROUP BY c_id ORDER BY c_id;
SELECT c_id,GROUP_CONCAT(c_name) c_names FROM goods GROUP BY c_id ORDER BY c_id;
SELECT c_id,GROUP_CONCAT(c_name SEPARATOR ' ') c_names FROM goods GROUP BY c_id ORDER BY c_id;
查完怎么把GROUP_CONCAT(c_name)给解出来啊???显示如下
c_id name1 name2 name3
10001 沙 石 煤
10002 沙 水 盐
SELECT c_id,GROUP_CONCAT(DISTINCT c_name SEPARATOR ' ') c_names FROM goods GROUP BY c_id ORDER BY c_id;
SELECT a.c_id,MAX(f1),MAX(f2),MAX(f3) FROM (
SELECT *,
IF(CEILING(id MOD 3)=1,c_name,'') AS f1,
IF(CEILING(id MOD 3)=2,c_name,'') AS f2,
IF(CEILING(id MOD 3)=0,c_name,'') AS f3
FROM ttyy) a
GROUP BY a.c_id
我要得到以下结果
c_id name1 name2 name3
10001 沙 石 煤
10002 沙 水 盐
10001 沙 石 煤
10002 沙 水 盐 如何控制 沙 石 煤 的顺序? 这个顺序是否没有要求?
如果有要求,则你的表中需要再添加一个字段。
SELECT a.c_id,
MAX(IF(CEILING(id MOD 3)=1,c_name,'')) AS name1,
MAX(IF(CEILING(id MOD 3)=2,c_name,'')) AS name2,
MAX(IF(CEILING(id MOD 3)=0,c_name,'')) AS name3
FROM ttyy a
GROUP BY a.c_id自己修改一下字段嘛,注意加入自增字段ID
10001 沙 石 煤
10002 沙 水 盐 如何控制 沙 石 煤 的顺序? 这个顺序是否没有要求?
如果有要求,则你的表中需要再添加一个字段。
+-------+--------+
| c_id | c_name |
+-------+--------+
| 10001 | 沙 |
| 10001 | 石 |
| 10001 | 煤 |
| 10002 | 沙 |
| 10002 | 水 |
| 10002 | 盐 |
+-------+--------+
6 rows in set (0.00 sec)mysql> select c_id,
-> SUBSTRING_INDEX(k,',',1) as name1,
-> SUBSTRING_INDEX(SUBSTRING_INDEX(k,',',2),',',-1) as name2,
-> SUBSTRING_INDEX(SUBSTRING_INDEX(k,',',3),',',-1) as name3
-> from (
-> select c_id,group_concat(c_name) as k
-> from t_dawenwen1128
-> group by c_id
-> ) t ;
+-------+-------+-------+-------+
| c_id | name1 | name2 | name3 |
+-------+-------+-------+-------+
| 10001 | 沙 | 石 | 煤 |
| 10002 | 沙 | 水 | 盐 |
+-------+-------+-------+-------+
2 rows in set (0.08 sec)mysql>