在Navicat for MySQL中打开视图时,提示视图没有主键的问题

一直把视图理解为一个select语句而已,视图一般就是用于查询,不会通过视图来更新表或视图本身的数据,所以视图根本不需要什么主键。今天自己建了一个视图view_test:

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打开就不会,说明这并不是说明大问题。

时间: 2024-08-26 05:39:08

在Navicat for MySQL中打开视图时,提示视图没有主键的问题的相关文章

MySql中测试GUID 与Int自增主键 性能对比 总结适用场景【转】

一. 创建以下三个数据表: int 主键自增表, guid主键表, 关联以上两个表的关系表tbl_test_relation CREATE TABLE `tbl_test_int` (    `id` INT(11) NOT NULL AUTO_INCREMENT,    `name` VARCHAR(50) NULL DEFAULT NULL,    `comment` VARCHAR(100) NULL DEFAULT NULL,    PRIMARY KEY (`id`))COMMENT=

Navicat在MySQL中添加外键详细过程

Navicat在MySQL中添加外键详细过程   /** *@author blovedr *功能: Navicat在MySQL中添加外键 *日期: 2018年6月21日   22:42 *注释: 学习数据库MySQL的点点记录, 谢谢网上各位大神分享经验,欢迎各位大神批评指导与交流. */   1. 打开Navicat连接上数据库, 并建立新的数据库:"test": 2. 在数据库"test"中创建两个表"emp"(主表)和"dept

Android中Activity切换时共享视图元素的切换动画(4.x兼容方案)

同时发布在我的博客 点此进入 开始 上一篇讲了使用 Google 的 AppCompat-v7 来实现 Activity 切换时实现共享视图元素的切换动画.这一篇介绍两个可以兼容 4.x 的两个第三方方案. 上一篇:Android中Activity切换时共享视图元素的切换动画(5.0以上) 方案一:PreLollipopTransition 首先在 build.gradle 配置文件添加这个库依赖 dependencies { compile 'com.kogitune:pre-lollipop

VC2010打开资源视图时提示“指南必须指定类型”,.rc资源文件损坏(转)

VC: 打开资源视图时提示“指南必须指定类型 ”(Guideline……specify type) ,.rc资源文件损坏 可能是TFS导致的 使用记事本打开.rc文件,找到“DESIGNINFO”节,会看到如下的数据:    BEGIN          , 50          , 13798327    END这就是错误原因. 解决方法:1. 参考此前的源码备份版本,并修改上面的错误数据.2. 对于无法修改的,可以直接去掉中间的数字,如下: BEGIN    END

解决当打开Unity时 提示项目已经打开,而自己之前并没有打开过(可能之前异常关闭)的问题

当打开Unity时 提示项目已经打开,而自己之前并没有打开过(可能之前异常关闭) 发生这种情况时 打开项目目录中的 Temp文件夹,可以找到 一个 UnityLockfile 文件 将这个文件删除就可以正常打开了

打开Excel2010时提示错误:向程序发送命令时出现问题!

使用的是正版的Windows7(64位)专业版系统以及正版的Office2010专业版(32位),从去年3月份发现:打开Excel2010时弹出'程序发送命令时出现问题'的对话框,随后无法打开Excel文件的问题,但是 Word 和PowerPoint并没有出现类似问题. 尝试了下面的四种方法都没能得到解决: 1.采用Excel菜单'常规'选项下取消勾选"忽略使用动态数据交换(DDE)的其他应用程序"的方法( article-1296-1.html). 2.取消excel中的加载项的方

LoadRunner中运行场景时提示"You do not have a license for this Vuser type."

LoadRunner中运行场景时提示"You do not have a license for this Vuser type." 2012-06-15 17:09:07|  分类: Software Testing |举报 |字号 订阅 问题: 使用Java Vuser协议调用Java应用程序,脚本执行通过后,在Controller中运行场景时,均为Errors不通过,报错如下: 解决: 百度"You do not have a license for this Vuse

lnmp打开cacti时提示PHP Warning: date()

配置完lnmp后,配置cacti,打开时发现,显示网页,手动运行   /usr/local/php/bin/php  /usr/local/nginx/html/cacti/poller.php  --force时提示 PHP Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the da

在Windows7中打开照片,提示“Windows 照片查看器无法显示此图片,因为计算机上的可用内存可能不足。....”

在Windows7中打开照片,提示“Windows 照片查看器无法显示此图片,因为计算机上的可用内存可能不足.请关闭一些目前没有使用的程序或者释放部分硬盘空间(如果硬盘几乎已满),然后重试.” 如下图所示: 处理过程: 1.查看计算机的内存和磁盘空间是否足够.  总内存为4GB,只使用40%:每个分区的磁盘空间都有几十个G.(资源足够) 2.查看图片是否已损坏.  图片在别的电脑能打开,或者在本机使用“画图”功能也能打开. (未损坏) 经发现,使用Windows照片查看器打开电脑中存在的图片,不