日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

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

發(fā)布時(shí)間:2025/3/15 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql修改的值子查询语句_MySQL的SQL语句 - 数据操作语句(13)- 子查询(13) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

子查詢的限制

● 通常,不能在子查詢中修改表并從同一表中進(jìn)行選擇。例如,此限制適用于以下形式的語(yǔ)法:

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 ...);

在這里,來(lái)自派生表的結(jié)果被物化為臨時(shí)表,因此在對(duì) t 進(jìn)行更新時(shí),t 中的相關(guān)行已經(jīng)被選中。

通常,可以通過(guò)添加 NO_MERGE 優(yōu)化器提示來(lái)影響優(yōu)化器物化派生表。

● 僅部分支持行比較操作:

■ 對(duì)于 expr [NOT] IN subquery,expr 可以是 n 元組(使用行構(gòu)造函數(shù)語(yǔ)法指定),子查詢可以返回 n 元組的行。因此,允許的語(yǔ)法更明確地表示為 row_constructor [NOT] IN table_subquery

■ 對(duì)于 expr op {ALL|ANY|SOME} subquery,expr 必須是標(biāo)量值,子查詢必須是列子查詢;它不能返回多個(gè)列行。

換句話說(shuō),對(duì)于返回多行 n 元組的子查詢,支持以下操作:

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

但不支持以下查詢:

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

支持 IN 的行比較而不支持其他形式行比較的原因是,IN 是通過(guò)將其重寫(xiě)為一序列 = 比較和 AND 操作來(lái)實(shí)現(xiàn)的。這種方法不適用于 ALL、ANY 或 SOME。

● 在 MySQL 8.0.14 之前,FROM 子句中的子查詢不能是關(guān)聯(lián)子查詢。在查詢執(zhí)行期間,它們被整體物化(計(jì)算以生成結(jié)果集),因此不能按外部查詢的每行計(jì)算它們。優(yōu)化器延遲物化直到需要結(jié)果,這可能允許避免物化。

● 對(duì)于某些子查詢運(yùn)算符,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 允許子查詢引用存儲(chǔ)函數(shù),該函數(shù)具有修改數(shù)據(jù)的副作用,例如向表中插入行。例如,如果 f() 插入行,則以下查詢可以修改數(shù)據(jù):

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

此行為是 SQL 標(biāo)準(zhǔn)的擴(kuò)展。在 MySQL 中,它可以產(chǎn)生不確定的結(jié)果,因?yàn)閷?duì)于給定查詢的不同的執(zhí)行,f() 可能會(huì)執(zhí)行不同的次數(shù),這取決于優(yōu)化器選擇如何處理它。

對(duì)于基于語(yǔ)句或混合格式的復(fù)制,這種不確定性的一個(gè)含義是,這樣的查詢可能在源及其從屬庫(kù)上生成不同的結(jié)果。

總結(jié)

以上是生活随笔為你收集整理的mysql修改的值子查询语句_MySQL的SQL语句 - 数据操作语句(13)- 子查询(13)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。