gpt4 book ai didi

mysql - 在 union select mysql 中使用月份名称而不是数字

转载 作者:行者123 更新时间:2023-11-29 10:02:13 25 4
gpt4 key购买 nike

首先,我只是使用了union,我不太理解它。基本上,更改我通常使用的月份的名称

select MONTHNAME (date) 

但在这种情况下,我对 Union 的了解并不深入,因此将月份数更改为月份名称非常令人困惑。你能帮助我吗?请不要只给出答案,还请提供解释。

这是我的查询,仅供引用,此查询得到了我上一个主题中的“粘性位”的帮助。

SELECT m.month month_table,
coalesce(s.count, 0) cstart,
coalesce(e.count, 0) cend
FROM (SELECT 1 month
UNION ALL
SELECT 2 month
UNION ALL
SELECT 3 month
UNION ALL
SELECT 4 month
UNION ALL
SELECT 5 month
UNION ALL
SELECT 6 month
UNION ALL
SELECT 7 month
UNION ALL
SELECT 8 month
UNION ALL
SELECT 9 month
UNION ALL
SELECT 10 month
UNION ALL
SELECT 11 month
UNION ALL
SELECT 12 month) m
LEFT JOIN (SELECT month(n.start_date) month,
count(*) count
FROM newdata n
GROUP BY month(n.start_date)) s
ON s.month = m.month
LEFT JOIN (SELECT month(n.end_date) month,
count(*) count
FROM newdata n
GROUP BY month(n.end_date)) e
ON e.month = m.month
ORDER BY m.month;

我尝试将所有“月份”替换为“月份名称”,但结果是 0。

在我更改月份名称之前

 month_table|cstart|cend
1 | 1 | 0
2 | 0 | 1
3 | 0 | 0
4 | 0 | 0
5 | 0 | 0
6 | 0 | 0
7 | 0 | 0
8 | 1 | 0
9 | 0 | 0
10 | 1 | 2
11 | 0 | 0
12 | 0 | 0

当我更改月份名称时,结果为

month_table|cstart|cend
1 | 0 | 0
2 | 0 | 0
3 | 0 | 0
4 | 0 | 0
5 | 0 | 0
6 | 0 | 0
7 | 0 | 0
8 | 0 | 0
9 | 0 | 0
10 | 0 | 0
11 | 0 | 0
12 | 0 | 0

最佳答案

您可以使用 CONCAT 将月份数字转换为日期字符串,然后将其传递给 MONTHNAME ,即将查询的第一行更改为:

SELECT MONTHNAME(CONCAT('2018-', m.month, '-01')) month_table,

输出(来自 previous question 的示例数据):

month_table     cstart  cend
January 1 0
February 0 1
March 0 0
April 0 0
May 0 0
June 0 0
July 0 0
August 1 0
September 0 0
October 1 2
November 0 0
December 0 0

SQLFiddle demo

关于mysql - 在 union select mysql 中使用月份名称而不是数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52683992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com