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

MYSQL查询选择不同的月份和年份,mysql,sql,distinct,Mysql,Sql,Distinct,我有一个带有datetime列的表,其中有多个日期。我想输出只存在一次的每一行的月份和年份。e、 g“2017年4月,2018年4月,2018年5月,2018年6月” 我已经设法让下面的工作,这显示“四月五月六月”,但它需要显示两次四月,因为它是在不同的年份,我还想显示各自的年份 <?php $results = mysqli_query($link, 'SELECT DISTINCT MONTH(date_added) AS "Month" FROM payments') or die(

我有一个带有datetime列的表,其中有多个日期。我想输出只存在一次的每一行的月份和年份。e、 g“
2017年4月
2018年4月
2018年5月
2018年6月

我已经设法让下面的工作,这显示“四月五月六月”,但它需要显示两次四月,因为它是在不同的年份,我还想显示各自的年份

<?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; ?>


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

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

从付款中选择不同的年份(添加日期)作为“年”,月份(添加日期)作为“月”
您必须分组:

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

使用更高版本和严格的规则,您将无法从上述任何一个答案中获得正确的响应,因为
groupby
在查询的
SELECT
部分之前操作,因此它不会响应别名

你需要

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

看,谢谢,效果很好。我自己也试过,但不知道它们需要用逗号分隔。