mysql修改的值子查询语句_MySQL的SQL语句 - 数据操作语句(13)- 子查询(13)

子查询的限制

● 通常,不能在子查询中修改表并从同一表中进行选择。例如,此限制适用于以下形式的语法:

1. DELETE FROM t WHERE ... (SELECT ... FROM t ...);

2. UPDATE t ... WHERE col = (SELECT ... FROM t ...);

3. {INSERT|REPLACE} INTO t (SELECT ... FROM t ...);

例外情况:如果使用的是派生表,并且派生表是物化的,而不是合并到外部查询中,则上述禁止不适用。例子:

1. UPDATE t ... WHERE col = (SELECT * FROM (SELECT ... FROM t...) AS dt ...);

在这里,来自派生表的结果被物化为临时表,因此在对 t 进行更新时,t 中的相关行已经被选中。

通常,可以通过添加 NO_MERGE 优化器提示来影响优化器物化派生表。

● 仅部分支持行比较操作:

■ 对于 expr [NOT] IN subquery,expr 可以是 n 元组(使用行构造函数语法指定),子查询可以返回 n 元组的行。因此,允许的语法更明确地表示为 row_constructor [NOT] IN table_subquery

■ 对于 expr op {ALL|ANY|SOME} subquery,expr 必须是标量值,子查询必须是列子查询;它不能返回多个列行。

换句话说,对于返回多行 n 元组的子查询,支持以下操作:

1. (expr_1, ..., expr_n) [NOT] IN table_subquery

但不支持以下查询:

1. (expr_1, ..., expr_n) op {ALL|ANY|SOME} subquery

支持 IN 的行比较而不支持其他形式行比较的原因是,IN 是通过将其重写为一序列 = 比较和 AND 操作来实现的。这种方法不适用于 ALL、ANY 或 SOME。

● 在 MySQL 8.0.14 之前,FROM 子句中的子查询不能是关联子查询。在查询执行期间,它们被整体物化(计算以生成结果集),因此不能按外部查询的每行计算它们。优化器延迟物化直到需要结果,这可能允许避免物化。

● 对于某些子查询运算符,MySQL 在 子查询 中不支持使用 LIMIT:

1. mysql> SELECT * FROM t1

2. WHERE s1 IN (SELECT s2 FROM t2 ORDER BY s1 LIMIT 1);

3. ERROR 1235 (42000): This version of MySQL doesn't yet support

4. 'LIMIT & IN/ALL/ANY/SOME subquery'

● MySQL 允许子查询引用存储函数,该函数具有修改数据的副作用,例如向表中插入行。例如,如果 f() 插入行,则以下查询可以修改数据:

1. SELECT ... WHERE x IN (SELECT f() ...);

此行为是 SQL 标准的扩展。在 MySQL 中,它可以产生不确定的结果,因为对于给定查询的不同的执行,f() 可能会执行不同的次数,这取决于优化器选择如何处理它。

对于基于语句或混合格式的复制,这种不确定性的一个含义是,这样的查询可能在源及其从属库上生成不同的结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573777.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ocx控件 postmessage消息会消失_APP控件之二——弹框

弹框分为两种:模态弹框和非模态弹框一、模态弹框模态弹框和非模态弹框最大的区别就是是否强制用户交互。模态弹框会打断用户的当前操作流程,用户不在弹框上操作的话,其余功能都使用不了。优点是:可以很好的获取的用户的视觉焦点缺…

结对编程(1)

我的结对编程项目搭档是王以正,我们的代码也是基于他个人项目的代码修改的。 由于王以正同学不在宿舍住也不怎么会宿舍,我们结对编程的时间较少,不过他将他的代码代码放到了github上面,这也让我有机会学习了github的使用。感觉这个…

mysql sqldump_mysql sqldump 备份

参考:https://www.cnblogs.com/linuxk/p/9371475.html1. windows 下面 创建 dump.bat 文件:文件内容如下"C:\Program Files\MariaDB 10.4\bin\mysqldump" -u root -p123456 metadata > D:\DB\mysql\metadata.sql备注: 这个是ma…

伪代码block转换成程序流程图_程序设计基础

1、程序与程序设计语言的基本知识1)程序:为解决某一问题而采用程序设计语言编写的一个指令集合。程序算法(对操作的描述)数据结构(对数据的描述)程序设计语言语言工具和环境。2)程序的特点&…

Java Map用法

Map简介 将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口。 Map 接口提供三种collection 视图,允许以键集、值集或键-值映射关系集的形…

mysql 内联函数_C++之内联函数

C继承C的一个重要特性是效率,在C中保护效率的一个方法是使用宏(macro),宏的实现是使用预处理器而不是编译器,预处理器直接用宏代码替换宏调用,所以就没有了参数压栈、生成汇编语言的CALL、返回参数、执行汇编语言的RETURN的时间花费&#xff…

10桌面管理文件收纳_二十余件精选桌面好物推荐,让学习工作生活满满正能量!...

这些提升办公桌幸福感的好物,能让你的学习与工作正能量满满!01 笔记本支架笔记本是为了人们出行方便而设计的,显示器的位置并没有照顾到长期对着显示器码字的人群,许多以笔记本为主力的办公族也被迫成为了低头族。绿巨能(llano)笔…

osm 搭建离线地图_使用离线OSM离线OpenLayers Web应用程序

我m trying to create map based web app which user can set landmark on the provided map. Boundaries of map is limited to a small city, and the client computer is always offline, no internet access at all. After a whole day of googling I已经发现OpenLayers和O…

图像水平梯度和竖直梯度代码_Opencv图像处理(三)

晓强Deep Learning的读书分享会,先从这里开始,从大学开始。大家好,我是晓强,计算机科学与技术专业研究生在读。我会不定时的更新我的文章,内容可能包括深度学习入门知识,具体包括CV,NLP方向的基…

php5 mysql 源_CentOS 7.4使用yum源安装MySQL5.7

从CentOS 7.0发布以来,yum源中开始使用Mariadb来代替MySQL的安装。即使你输入的是yum install -y mysql , 显示的也是Mariadb的安装内容。使用源代码进行编译安装又太麻烦。因此,如果想使用yum安装MySQL的话,就需要去下载官方指定的yum源&…

Thinkphp kindeditor 内容转义

参考了:【解决】ThinkPHP整合Html编辑器时出现自动转义的问题 遇到问题也是保存到数据库中的内容,会转义成“\"” 使用 $data[content] stripslashes(htmlspecialchars_decode($_POST[content])); 可以将"\""的转义处理好。转载于:htt…

hash 值重复_面试题:HashSet是如何保证元素不重复的

面试官:你能简单介绍List和Set有什么区别吗?小憨:List是一个有序的集合,在内存是连续存储的,可以存储重复的元素,List查询快,增删慢;Set是一个无序的集合,在内存中不连续…

RabbitMQ 原文译03--发布和订阅

发布/订阅 在之前的案例中我们创建了一个工作队列,这个工作队列的实现思想就是一个把每一个任务平均分配给每一个执行者,在这个篇文章我们会做一些不一样的东西,把一个消息发送给多个消费者,这种模式就被称作"发布/订阅". 为了说明这个模式,我们将要创建一个简单的日…

html富文本编辑器插件_vue中使用vuequilleditor富文本编辑器

点击上方“小姚同学技术栈”快速关注我哟!vue-quill-editor是一个基于quill、适用于vue的富文本编辑器开源项目,支持服务端渲染和单页应用。目前项目热度还算可以,如果不考虑使用markdown,vue-quill-editor是一个比较好的选择。本…

python面向对象怎么解决_Python面向对象编程1

前言面相对象是Python的重要特性,继承了C的类风格,在Python中的一切数据类型都是面向对象的。本章主要介绍Python的面向对象编程。面向对象:什么是OOP(面向对象),Object Oriented Programming,原来就是面向对象的编程啊…

二元函数图像生成器_GAN生成图像综述

点击上方“CVer”,选择加"星标"或“置顶”重磅干货,第一时间送达作者:YTimo(PKU EECS) 研究方向:深度学习,计算机视觉本文转载自:SIGAI摘要生成对抗网络(Generative adversarial network, GAN)…

sublime写网页代码,里面的中文字符会出现乱码

经过百度后解决了这个问题: <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><title>Document</title></head><body>你设置编码了吗&#xff1f;</body></html>追问&#xff1a;没…

mysql 5.5.修改库名_安全快速修改Mysql数据库名的5种方法

1. RENAME DATABASE db_name TO new_db_name这个。。这个语法在mysql 5.1.7中被添加进来&#xff0c;到了5.1.23又去掉了。据说有可能丢失数据。还是不要用的好。详见&#xff1a; http://dev.mysql.com/doc/refman/5.1/en/rename-database.html2.如果所有表都是MyISAM类型的话…

设计模式之禅读书笔记

》设计原则《 》Single Responsibility Principle&#xff08;单一职责原则&#xff09;类只有一个修改的原因。 ●类的复杂性降低&#xff0c;实现什么职责都有明确的定义。 ●可读性高 ●可维护性高 ●变更引起的风险降低。 PS&#xff1a;基本不可能实现 》里氏替换原则&…

mysql mysql_set_charset_SQL注入攻击之 mysql_set_charset [转]

本文转载地址&#xff1a;http://hi.baidu.com/cuttinger/blog/item/e9a93901934755147bec2cb0.html1。老话题&#xff0c;mysql_real_escape_string单引号&#xff0c;大多数情况下&#xff0c;防止sql注入攻击足够了。$mysql mysql_connect("host","user&quo…