当前位置: 首页 > 图文教程 > 数据库 > MYSQL > MySQL 视图 第1349号错误解决方法

MYSQL
预防性维护MySQL数据库服务器详解
MySQL服务器内部安全数据目录访问
如何使用MySQL系统的发布与安装
关于MySQL数据库的存储引擎详细介绍
通过数据库引擎来加速MySQL数据库
关于MySQL数据库的用户认证系统分析
在MySQL中获得更好的全文搜索结果
教你如何使用触发器管理MySQL数据库
保护MySQL数据库中重要的数据注意事项
用新的PHP插件实现MySQL为基础的事务
MySQL 4.1数据库中数据转换注意事项
优化MySQL数据库查询的三种方法简介
MySQL数据库批量导入脚本
MySQL中如何灵活运用tips功能
向你介绍MySQL数据库备份的简单知识
通过PHP连接My SQL的两种方法简介
MySQL数据库账户授权的相关管理解析
用Perl DBI连接MySQL数据库
MySQL数据库安全配置
快速修复mysql数据库

MYSQL 中的 MySQL 视图 第1349号错误解决方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 217 ::
收藏到网摘: n/a

把下面SQL里的SELECT单独执行,没有问题,但是用来CREATE VIEW 就报错了.
复制代码 代码如下:

CREATE OR REPLACE VIEW BLOG_V_ADMIN
(ID,NICKNAME,SEX,EMAIL,PHONE,QQ,MSN,HTTP,REGISTER_TIME,
IP,LAST_LOGIN_IP,LOGIN_TIME)
AS
SELECT
A.ID,A.NICKNAME,A.SEX,A.EMAIL,A.PHONE,A.QQ,A.MSN,A.HTTP,A.REGISTER_TIME,
B.IP AS LAST_LOGIN_IP,B.LOGIN_TIME AS LAST_LOGIN_TIME
FROM
BLOG_ADMIN A LEFT JOIN
BLOG_ADMIN_LOGIN_TRACK B ON B.ADMIN = A.ID LEFT JOIN
(SELECT ADMIN,MAX(LOGIN_TIME) AS LOGIN_TIME FROM BLOG_ADMIN_LOGIN_TRACK GROUP BY ADMIN) C ON B.ADMIN = C.ADMIN;
ERROR 1349 (HY000): View's SELECT contains a subquery in the FROM clause
这是BUG吗?见:http://bugs.mysql.com/bug.php?id=16757

木有办法,我只好这样改了:
复制代码 代码如下:

CREATE OR REPLACE VIEW BLOG_V_ADMIN
(ID,NICKNAME,SEX,EMAIL,PHONE,QQ,MSN,HTTP,REGISTER_TIME,
LOGIN_TIME,LAST_LOGIN_IP)
AS
SELECT
A.ID,A.NICKNAME,A.SEX,A.EMAIL,A.PHONE,A.QQ,A.MSN,A.HTTP,A.REGISTER_TIME,
(SELECT LOGIN_TIME FROM BLOG_ADMIN_LOGIN_TRACK WHERE ADMIN = A.ID ORDER BY LOGIN_TIME DESC LIMIT 1) AS LAST_LOGIN_TIME,
(SELECT INET_NTOA(IP) FROM BLOG_ADMIN_LOGIN_TRACK WHERE ADMIN = A.ID ORDER BY LOGIN_TIME DESC LIMIT 1) AS LAST_LOGIN_IP
FROM
BLOG_ADMIN A;