MYSQL 查询 select 不同的月份和年份
MYSQL query select distinct month and year
我有一个 table,其中的日期时间列包含多个日期。我想为仅存在一次的每一行输出月份和年份。例如“April 2017
、April 2018
、May 2018
、June 2018
”
我已经设法让下面的工作正常,它显示 "April May June",但它需要显示四月两次,因为它在不同的年份,我也想显示它们各自的年份。
<?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 DISTINCT YEAR(date_added) AS "Year", MONTH(date_added) AS "Month" FROM payments
您必须分组:
SELECT MONTH(`date_added`) AS `Month`, YEAR(`date_added`) AS `Year`
FROM `payments`
GROUP BY `Month`, `Year`
使用更高版本和严格的规则,您将不会从上述任何一个答案中得到正确的响应,因为 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`)
我有一个 table,其中的日期时间列包含多个日期。我想为仅存在一次的每一行输出月份和年份。例如“April 2017
、April 2018
、May 2018
、June 2018
”
我已经设法让下面的工作正常,它显示 "April May June",但它需要显示四月两次,因为它在不同的年份,我也想显示它们各自的年份。
<?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 DISTINCT YEAR(date_added) AS "Year", MONTH(date_added) AS "Month" FROM payments
您必须分组:
SELECT MONTH(`date_added`) AS `Month`, YEAR(`date_added`) AS `Year`
FROM `payments`
GROUP BY `Month`, `Year`
使用更高版本和严格的规则,您将不会从上述任何一个答案中得到正确的响应,因为 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`)