我们说我有一张表order
如下:
o_id | o_uid | o_date
1 | 5 | June 10, 2015
2 | 1 | June 10, 2015
3 | 8 | June 10, 2015
5 | 15 | June 11, 2015
6 | 11 | June 11, 2015
7 | 16 | June 12, 2015
8 | 19 | June 12, 2015
我尝试运行以下查询:
SELECT o_id, o_uid FROM order GROUP BY o_date
我认为它会给我如下结果:
[
"June 10, 2015" => [
[
"o_id" => 1
"o_uid" => 5
],
[
"o_id" => 2
"o_uid" => 1
],
[
"o_id" => 3
"o_uid" => 8
]
],
"June 11, 2015" => [
[
"o_id" => 4
"o_uid" => 15
],
[
"o_id" => 5
"o_uid" => 11
]
],
...
]
查询未按预期提供结果。我可以使用PHP来获得所需的结果,但如果可以的话,为什么不使用MySQL并在一行中完成任务。 GROUP BY
条款非常令人困惑。是否有其他条款可以按日期对记录进行分组?
我得到的结果: SQL Fiddle
答案 0 :(得分:1)
使用
SELECT o_id, GROUP_CONCAT(o_id),GROUP_CONCAT(o_uid),o_date FROM `order`
GROUP BY o_date
然后使用php / do操作相应地分隔逗号分隔列表。
输出:来自sqlfiddle的格式化程序输出。
o_id GROUP_CONCAT(o_id) GROUP_CONCAT(o_uid) o_date
1 1,2,3 5,1,8 June 10, 2015
4 4,5 15,11 June 11, 2015
6 6,7 16,19 June 12, 2015
<强> Fiddle 强>