服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|

MySQL中Update、select联用操作单表、多表,及视图与临时表的区别

2019-07-08 11:38laozhang Mysql

本篇文章给大家分享了MySQL中Update、select联用操作单表、多表,及视图与临时表的区别,有兴趣的朋友学习下吧。

一、MySQL中使用从表A中取出数据来更新表B的内容

例如:要update表data中的一些列属性,但是修改属性的内容来源是来自表chanpin。SQL语言中不要显示的出现select关键字

update data d,chanpin c set d.zhulei=c.zhulei,d.xiaolei=c.xiaolei,d.fenxiang=c.fenxiang,d.zhuanye=c.zhuanye,d.jiliang=c.jiliang,d.gs=c.zgs,d.xzgs=c.zgs,d.bjgs=(c.zgs*d.jdxs*d.jishu*d.xs1*d.xs2*d.xs3),d.wygs=d.bjgs,d.hzgs=? where d.id=? and c.chanpin=? and c.fenlei=?";

二、MySQL中update和select的表是同一张表

MySQL有点让人不爽的是它的select from后面不能跟要update的表名,例如:

update TBCP_SELLER set status =( select STATUS from TBCP_SELLER where tbid=2011645303 ) where tbid=2011645303 

要更新的表和查询的表名相同,sql执行时报错:You can't specify target table 'TBCP SELLER' for update in FROM clause
应对这个问题,我们可以构造一个视图,用select嵌套的方式实现查询和更新,如下所示:

update TBCP_SELLER set status =( select STATUS from ( select * from TBCP_SELLER )as x where tbid=2011645303 ) where tbid=2011645303 

注意上面SQL中的:

( select * from TBCP_SELLER )as x

as x必须要有,否则会报错:Every derived table must have its own alias(每一个派生表必须有自己的别名)

三、临时表与视图的区别

临时表

临时表是建立在系统临时文件夹中的表,如果使用得当,完全可以像普通表一样进行各种操作,在VFP退出时自动被释放。创建MySQL临时表很容易,给正常的CREATE TABLE语句加上TEMPORARY关键字 Sql代码 :

CREATE TEMPORARY TABLE tmp_table ( name VARCHAR(10) NOT NULL, value INTEGER NOT NULL )

CREATE TEMPORARY TABLE tmp_table ( name VARCHAR(10) NOT NULL, value INTEGER NOT NULL )

视图

从用户角度来看,一个视图是从一个特定的角度来查看数据库中的数据。

从数据库系统内部来看,一个视图是由SELECT语句组成的查询定义的虚拟表。

从数据库系统内部来看,视图是由一张或多张表中的数据组成的

从数据库系统外部来看,视图就如同一张表一样,对表能够进行的一般操作都可以应用于视图,例如查询,插入,修改,删除操作等。

延伸 · 阅读

精彩推荐
  • MysqlMySQL关于sql_mode解析与设置讲解

    MySQL关于sql_mode解析与设置讲解

    今天小编就为大家分享一篇关于MySQL关于sql_mode解析与设置讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...

    CODETC2152019-06-01
  • Mysqlmysql实现查询结果导出csv文件及导入csv文件到数据库操作

    mysql实现查询结果导出csv文件及导入csv文件到数据库操作

    这篇文章主要介绍了mysql实现查询结果导出csv文件及导入csv文件到数据库操作,结合实例形式分析了mysql相关数据库导出、导入语句使用方法及操作注意事项,需要的朋友可以参考下...

    CyborgLin3672019-07-02
  • MysqlMySQL数据表基本操作实例详解

    MySQL数据表基本操作实例详解

    这篇文章主要介绍了MySQL数据表基本操作,结合实例形式较为详细的分析了MySQL针对数据表的基本创建、表结构查看、修改、删除等相关操作技巧,需要的朋友可以参考下...

    程志伟4272019-07-07
  • MysqlMysql多主一从数据备份的方法教程

    Mysql多主一从数据备份的方法教程

    这篇文章主要给大家介绍了关于Mysql多主一从数据备份的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧...

    张志有3682019-06-13
  • MysqlMysql 相邻两行记录某列的差值方法

    Mysql 相邻两行记录某列的差值方法

    今天小编就为大家分享一篇Mysql 相邻两行记录某列的差值方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    chenghaoyi61292019-07-04
  • Mysql使用JDBC连接Mysql数据库会出现的问题总结

    使用JDBC连接Mysql数据库会出现的问题总结

    这篇文章主要给大家介绍了关于使用JDBC连接Mysql数据库会出现的问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...

    Dmego3612019-06-21
  • MysqlMySQL可视化工具Navicat的连接方法

    MySQL可视化工具Navicat的连接方法

    今天小编就为大家分享一篇关于MySQL可视化工具Navicat的连接方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...

    回忆不说话2122019-06-19
  • Mysql关于mysql 8.0.13zip包安装方法

    关于mysql 8.0.13zip包安装方法

    这篇文章主要介绍了关于mysql 8.0.13zip包安装方法,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下...

    midnt2862019-06-18