MYSQL查询选择不同的月份和年份

时间:2018-06-09 14:07:31

标签: php mysql sql mysqli distinct

我有一个带有多个日期的日期时间列的表。我想输出仅存在一次的每一行的月份和年份。例如" April 2017April 2018May 2018June 2018"

我已经成功完成了以下工作,这显示了" 4月5月6月",但它需要在不同年份显示4月两次,我也想展示他们各自的年份。

<?php $results = mysqli_query($link, 'SELECT DISTINCT MONTH(date_added) AS "Month" FROM payments') or die("Query fail: " . mysqli_error($link)); ?>

<?php foreach($results as $result) :?>
    <?php $monthText = date("F", strtotime("2001-" . $result['Month'] . "-01")); ?>
            <?= $monthText ?>
<?php endforeach; ?>

我已经研究了几个小时而没有找到一个有效的解决方案。

3 个答案:

答案 0 :(得分:4)

您可以将distinct关键字应用于字段组合:

SELECT DISTINCT YEAR(date_added) AS "Year", MONTH(date_added) AS "Month" FROM payments

答案 1 :(得分:3)

你必须分组:

SELECT MONTH(`date_added`) AS `Month`, YEAR(`date_added`) AS `Year`
FROM `payments`
GROUP BY `Month`, `Year`

答案 2 :(得分:0)

对于更高版本和严格的规则,您将无法从以上任一答案中获得正确的响应,因为GROUP BY在查询的SELECT部分之前进行操作,因此不会响应别名。

您需要

SELECT DISTINCT MONTH(`date_added`) AS `Month`, YEAR(`date_added`) AS `Year`
FROM payments GROUP BY MONTH('date_added`), YEAR(`date_added`)