我希望得到一个按天分组的计数。以下SELECT工作正常:
SELECT COUNT( time_end ),
time_end
FROM main
GROUP BY DAY( time_end )
我将其复制/粘贴到phpmyadmin的VIEW创建表单中,并收到此错误:
“#1064 - 您的SQL语法出错;请查看与您的MySQL服务器版本对应的手册,以便在'count(time_end)附近使用正确的语法.AS SELECT count(time_end),time_end来自主要的GROUP BY d'第4行“
这是从phpmyadmin的表单生成的完整SQL:
CREATE ALGORITHM = UNDEFINED VIEW `count by day` (
time_end,
count( time_end )
) AS SELECT COUNT( time_end ),
time_end
FROM main
GROUP BY DAY( time_end )
怎么了?为什么有效的SELECT不能自动创建有效的VIEW?感谢。
答案 0 :(得分:4)
不知道phpMyAdmin在哪里获得该语法。使用:
CREATE VIEW COUNT_BY_DAY AS
SELECT COUNT( time_end ),
time_end
FROM main
GROUP BY DAY( time_end )
请注意,您依赖于MySQL's hidden column functionality - time_end值将是任意的(不能依赖于始终返回与要选择的值的数量相同的值)。它也不能移植到大多数数据库,你必须重新编写它。
此外,如果您不按月限制,那么您的计数将在28至31天之间出现偏差。并非所有月份都有31天。
答案 1 :(得分:2)
您的查询唯一的问题是您的列名没有反向标记。
创建算法=未定义的视图
count by day
(
`count(time_end)`#你需要把它放在反引号中 TIME_END,
)AS SELECT COUNT(time_end),
TIME_END
从主要 GROUP BY DAY(time_end)
对于它的价值,你的列名称是错误的。
您使用的语法是视图列名称的EXPLICIT NAMING。它允许您为列提供名称,否则将从查询列中派生,例如。
CREATE VIEW X AS
SELECT time_end, other1
FROM main
:: X contains the columns `time_end` and `other1`
CREATE VIEW X ( TheStopTime, DataPoint ) AS
SELECT time_end, other1
FROM main
:: X contains the columns `TheStopTime` and `DataPoint`