为什么MySQL中的每个有效选择都不是有效视图?

为什么MySQL中的每个有效选择都不是有效视图?,mysql,sql,view,Mysql,Sql,View,我想得到一个计数,按天分组。以下选项可以正常工作: SELECT COUNT( time_end ), time_end FROM main GROUP BY DAY( time_end ) 我将其复制/粘贴到phpmyadmin的视图创建表单中,并得到以下错误: 1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第4行的“counttime\u end AS SELECT count time\u end,time\u end

我想得到一个计数,按天分组。以下选项可以正常工作:

  SELECT COUNT( time_end ), 
         time_end
    FROM main
GROUP BY DAY( time_end )
我将其复制/粘贴到phpmyadmin的视图创建表单中,并得到以下错误:

1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第4行的“counttime\u end AS SELECT count time\u end,time\u end FROM main GROUP BY d”附近使用的正确语法

以下是从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 ) 

怎么了?为什么有效的选择不能自动成为有效的视图创建?谢谢。

我不知道phpMyAdmin从哪里得到了这种语法。使用:

CREATE VIEW COUNT_BY_DAY AS
  SELECT COUNT( time_end ), 
         time_end
    FROM main
GROUP BY DAY( time_end )
请注意,您所依赖的是-时间_end值将是任意的,不能依赖它始终返回与要从中选择的值的数量相同的值。它也不能移植到大多数数据库,您必须重新编写它


此外,如果你不按月份限制的话,你的计数将在28-31天内发生倾斜。并非所有月份都有31天。

您的查询唯一的错误是您的列名没有打勾

创建算法=按天计算的未定义视图计数 `计算时间_end`你需要把这个放在背景中 时间结束了, 选择计数时间结束时, 时间到了 从主要 按白天时间分组\u结束

值得一提的是,列名的位置不对

您使用的语法是视图列名的显式命名。它允许您为从查询列派生的列命名,例如

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`