我很难按日期对所有行数据进行分组。 这是我的表
id date Company
---|----------|-------------
1 |2017-06-25| Inzpect
2 |2017-07-04| Inzpect
3 |2017-06-25| Meralco
4 |2017-06-27| Ginebra
5 |2017-06-26| Inzpect
这是我的sql
SELECT date ,company FROM tbl_reports WHERE YEAR(date) = '2017' group by date
这是我到达我的sql的结果
date Company
------------|----------
2017-06-25 | Inzpect
2017-06-26 | Inzpect
2017-06-27 | Ginebra
2017-07-04 | Inzpect
为什么它没有从我的表中获取所有数据并消除我的一行
我想要获得的是我想要获取所有行并按日期对其进行分组,但它始终会使用相同日期的某些行:/。
date Company
------------|----------
2017-06-25 | Inzpect
2017-06-25 | Meralco
2017-06-26 | Inzpect
2017-06-27 | Ginebra
2017-07-04 | Inzpect
你可以帮助我们:(
答案 0 :(得分:1)
尝试以下查询:
SELECT `date`, company
FROM tbl_reports
WHERE YEAR(`date`) = '2017'
order by `date`;
答案 1 :(得分:1)
首先,year()
是一个返回数字的函数,因此不要在比较中放置单引号。这样更好:
where year(date) = 2017
其次,直接进行日期比较更好(性能),而不是使用函数。
其他人提到你似乎想要order by
。这是查询的一个很好的版本:
select r.date, r.company
from tbl_reports r
where r.date >= '2017-01-01' and r.date < '2018-01-01'
order by r.date;
答案 2 :(得分:0)
您似乎需要ORDER BY
而不是GROUP BY
SELECT date ,company FROM tbl_reports WHERE YEAR(date) = '2017' ORDER BY date
GROUP BY
GROUP BY语句通常与聚合函数(COUNT,MAX,MIN,SUM,AVG)一起使用,以将结果集分组为一列或多列。
ORDER BY
ORDER BY关键字默认按升序对记录进行排序。要按降序对记录进行排序,请使用DESC关键字。