我有一个sql语句:
SELECT id, name, date FROM money_month WHERE user_id = '{$_SESSION['id']}';
它会返回这样的行:
| id | name | date |
|----|--------|------------|
| 1 | Mike | 2018-09-05 |
| 2 | Nelson | 2018-09-07 |
| 3 | Bity | 2018-09-08 |
| 4 | Ory | 2018-10-04 |
如果我使用group by,比如:
SELECT id, name, date FROM money_month WHERE user_id = '{$_SESSION['id']}' GROUP BY YEAR(date), MONTH(date) ORDER BY date DESC;
它可以工作,但只显示每个月的第一行,如下所示:
| id | name | date |
|-----------|------|------------|
| September | | |
| 1 | Mike | 2018-09-05 |
| October | | |
| 4 | Ory | 2018-10-04 |
有可能用月份来分隔行,这样吗?
| id | name | date |
|-----------|--------|------------|
| September | | |
| 1 | Mike | 2018-09-05 |
| 2 | Nelson | 2018-09-07 |
| 3 | Bity | 2018-09-08 |
| October | | |
| 4 | Ory | 2018-10-04 |
我的sql输出
$month = '';
while($row = $result->fetch_assoc()) {
if($month != $row["date"])
{
$month = substr($row["date"],5,2);
if ($month == "10") { $output= "October"; }
if ($month == "9") { $output= "September"; }
echo $output;
}
试图达到这样的目标:
但我的输出是这样的:
3条答案
按热度按时间voj3qocg1#
如果我没弄错的话,你只需要按日期订货
在使用GROUPBY时,应该聚合不在GROUPBY子句中的列
1l5u6lss2#
您可以尝试以下sql:
查询结果如下:
那你可以用
y
以及m
匹配年和月。relj7zay3#
下面是一段php代码,它应该是您想要实现的目标的良好开端。这是基于你的样品
money_month
表和所需的输出图像。这将为您提供一个类似这样的输出,然后您可以根据需要对其进行样式设置: