在Navicat for MySQL中打开视图时,提示视图没有主键的问题
2016-08-05 14:41
573 查看
一直把视图理解为一个select语句而已,视图一般就是用于查询,不会通过视图来更新表或视图本身的数据,所以视图根本不需要什么主键。今天自己建了一个视图view_test:
在Navicat of MySQL中打开这个视图的时候,弹出如下的提示(网上的图,图中第一行的v_sys_user就是自己创建的视图名称),说这个视图没有主键,但是能正常查询出视图的结果。
后来在 http://blog.csdn.net/wufengui1315/article/details/11620393
这里查到,说用了join或者where子查询里如果用了From子句中的表的话就会报这个提示,于是我把where子句去掉,改成:
结果还是报相同的提示框,后来不小心忽略了 "order by a.c1" 这一行执行上述语句,打开的时候,就没这个提示了,再把where子句加回来,但把order by语句去掉,打开也不会报错,说明问题出在order by子句,而不是什么where 或者join.只要去掉order by语句就好了。
另外,报错的视图语句(包含order by语句),在Navicat for MySQL中打开会报提示,但用MySQL Workbench打开就不会,说明这并不是什么大问题。
drop view if exists view_test create view view_test as select a.c1,a.c2, b.c1,b.c2, c.c1,c.c2, d.c1,d.c2 from table_A a join teble_B b on a.c3=b.c3 join table_C c on b.c4=c.c4 join table_D d on c.c5=d.c5 where d.c6 in ( select c6 from table_E where c5=(select c5 from table_D where c7='123321') ) order by a.c1
在Navicat of MySQL中打开这个视图的时候,弹出如下的提示(网上的图,图中第一行的v_sys_user就是自己创建的视图名称),说这个视图没有主键,但是能正常查询出视图的结果。
后来在 http://blog.csdn.net/wufengui1315/article/details/11620393
这里查到,说用了join或者where子查询里如果用了From子句中的表的话就会报这个提示,于是我把where子句去掉,改成:
drop view if exists view_test create view view_test as select a.c1,a.c2, b.c1,b.c2, c.c1,c.c2, d.c1,d.c2 from table_A a join teble_B b on a.c3=b.c3 join table_C c on b.c4=c.c4 join table_D d on c.c5=d.c5 order by a.c1
结果还是报相同的提示框,后来不小心忽略了 "order by a.c1" 这一行执行上述语句,打开的时候,就没这个提示了,再把where子句加回来,但把order by语句去掉,打开也不会报错,说明问题出在order by子句,而不是什么where 或者join.只要去掉order by语句就好了。
另外,报错的视图语句(包含order by语句),在Navicat for MySQL中打开会报提示,但用MySQL Workbench打开就不会,说明这并不是什么大问题。
相关文章推荐
- mysql修改字符集
- mysql-5.7.14-win32.zip 解压版 安装过程
- How do I set the default schema for a user in MySQL
- JDBC Statement接口实现的execute方法
- Mysql开启关闭
- mysql 5.6无法启用异步IO
- Mysql-5.7.14使用常见问题汇总
- mysql用户的创建、删除、权限更改
- MySQL5.7.14的免安装配置
- MySQL大表优化方案
- MySql学习笔记
- mysql 日期加减
- MYSQL
- MySQL 5.7.13 参数文件参考
- MySQL 5.6.30 参数文件参考
- mysql 连接出错 'mysqladmin flush-hosts'
- MySQL表分区(1)范围分区-range
- MySQL case when then else end 用法
- mysql 5.7.13 二进制版本的安装
- MySql 数据操作类