亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

MySQL關于exists的一個bug

2024-07-24 13:10:18
字體:
來源:轉載
供稿:網友

今天碰到一個關于exists很奇怪的問題

第一個語句如下:

SELECTcount(1)FROMAPPLY tWHEREEXISTS (SELECTr.APPLY_IDFROMRECORD rWHEREt.APPLY_ID = r.APPLY_ID);

產生的結果是:89584

第二個語句如下:

SELECTcount(1)FROMAPPLY tWHEREEXISTS (SELECTmax(r.FINISH_TIME)FROMRECORD rWHEREt.APPLY_ID = r.APPLY_ID);

產生的結果是:432382

確實相當奇怪,對于exist子句來說,其判斷的是子查詢的值是否存在,也就是說,列名,和對列名求最大值沒什么區別啊。

包括MySQL官方文檔中也提到

Traditionally, an EXISTS subquery starts with SELECT *, but it could begin with SELECT 5 or SELECT column1 or anything at all. MySQL ignores the SELECT list in such a subquery, so it makes no difference.

大意就是MySQL會自動忽略到SELECT的列表。

后來在自己的環境測試了一下,確實是MySQL的一個bug

測試環境:MySQL 5.6.31,5.7.14

mysql> create table t3(id int,t datetime);Query OK, 0 rows affected (0.44 sec)mysql> insert into t3 values(1,'20160812');Query OK, 1 row affected (0.16 sec)mysql> select 1 from dual where exists (select id from t3 where id=2);Empty set (0.15 sec)mysql> select 1 from dual where exists (select max(id) from t3 where id=2);+---+| 1 |+---+| 1 |

很明顯,id等于2的列不存在,但是第二條語句還是當做TRUE來處理了。

也確認了下兩條語句的執行計劃和改寫后的SQL

第一個語句

mysql> EXPLAIN EXTENDED select 1 from dual where exists (select id from t3 where id=2);+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+------------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+------------------+| 1 | PRIMARY | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | Impossible WHERE || 2 | SUBQUERY | t3 | NULL | ALL | NULL | NULL | NULL | NULL | 1 | 100.00 | Using where |+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+------------------+2 rows in set, 2 warnings (0.00 sec)mysql> show warnings;+---------+------+-------------------------------------------------------------------+| Level | Code | Message |+---------+------+-------------------------------------------------------------------+| Warning | 1681 | 'EXTENDED' is deprecated and will be removed in a future release. || Note | 1003 | /* select#1 */ select 1 AS `1` from DUAL where 0 |+---------+------+-------------------------------------------------------------------+ 

第二個語句

mysql> EXPLAIN EXTENDED select 1 from dual where exists (select max(id) from t3 where id=2);+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+----------------+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+----------------+| 1 | PRIMARY | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | No tables used || 2 | SUBQUERY | t3 | NULL | ALL | NULL | NULL | NULL | NULL | 1 | 100.00 | Using where |+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+----------------+2 rows in set, 2 warnings (0.00 sec)mysql> show warnings;+---------+------+-------------------------------------------------------------------+| Level | Code | Message |+---------+------+-------------------------------------------------------------------+| Warning | 1681 | 'EXTENDED' is deprecated and will be removed in a future release. || Note | 1003 | /* select#1 */ select 1 AS `1` from DUAL where 1 |+---------+------+-------------------------------------------------------------------+2 rows in set (0.00 sec) 

執行計劃及改寫后的SQL確實有所不同,看來,確實是MySQL的一個bug了。

于是,給官方提了個bug

http://bugs.mysql.com/bug.php?id=82562

總結

建議寫exists語句時,子查詢中直接用*,而不用對列進行任何函數操作,避免碰到官方bug,

事實上,對于abs,floor函數又沒問題

mysql> select 1 from dual where exists (select abs(id) from t3 where id=2);Empty set (0.07 sec)mysql> select 1 from dual where exists (select floor(id) from t3 where id=2);Empty set (0.00 sec)

以上所述是小編給大家介紹的MySQL關于exists的一個bug ,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91福利视频网| 亚洲一区二区三| 久久久人成影片一区二区三区| 国产精品第一页在线| 亚洲日韩中文字幕在线播放| 亚洲性线免费观看视频成熟| 久久国产精品久久国产精品| 日韩在线激情视频| 欧美激情一二三| 久久久精品国产网站| 国产精品成人免费电影| 国产亚洲美女精品久久久| 国产视频精品自拍| 色哟哟网站入口亚洲精品| 国产视频精品va久久久久久| 色综合色综合网色综合| 国产91免费看片| 久久手机精品视频| 亚洲欧美日韩在线高清直播| 亚洲老板91色精品久久| 国产丝袜精品第一页| 亚洲免费视频在线观看| 成人激情视频免费在线| 国产精品日韩欧美大师| 欧美国产第二页| 亚洲欧洲成视频免费观看| 日本中文字幕成人| 综合激情国产一区| 国产欧美一区二区白浆黑人| 91欧美视频网站| 午夜精品99久久免费| 97国产成人精品视频| 久久久精品久久| 97超视频免费观看| 国产亚洲视频在线观看| 高清欧美性猛交xxxx| 国产97在线|亚洲| 欧美激情乱人伦| 欧美在线视频播放| 欧美韩国理论所午夜片917电影| 日本精品性网站在线观看| 国模精品视频一区二区| 欧美日韩国产成人| 久久99青青精品免费观看| 欧美日韩福利视频| 69影院欧美专区视频| 91在线中文字幕| 亚洲跨种族黑人xxx| 久久国产精品影片| 亚洲sss综合天堂久久| 国产成人精品在线视频| 精品高清美女精品国产区| 亚洲精品女av网站| 亚洲春色另类小说| xxxxx91麻豆| 国产精品免费视频久久久| 亚洲欧美日韩天堂| 日本高清久久天堂| 日韩精品视频观看| 日韩精品免费看| 国产精品入口日韩视频大尺度| 欧美黑人视频一区| 91嫩草在线视频| 亚洲一区二区三区视频| 欧美精品久久久久久久久久| 久久99精品久久久久久青青91| 这里只有精品视频| 久久精品91久久香蕉加勒比| 久久久精品999| 亚洲人成在线观看网站高清| 亚洲视频欧美视频| 久久精品99无色码中文字幕| 亚洲成人激情在线观看| 国产日韩欧美视频在线| 国产97在线|亚洲| 国产精品xxxxx| 欧美大肥婆大肥bbbbb| 4k岛国日韩精品**专区| 欧美亚洲伦理www| 色偷偷综合社区| 久久九九热免费视频| 欧洲成人免费aa| 亚洲理论片在线观看| 日韩在线视频线视频免费网站| 在线观看欧美日韩| 精品动漫一区二区| 另类少妇人与禽zozz0性伦| 97久久伊人激情网| 成人黄色在线观看| 国产精品丝袜白浆摸在线| 国产国产精品人在线视| 一区二区三区无码高清视频| 国产精品jvid在线观看蜜臀| 日韩大陆欧美高清视频区| 国产精品av在线| 亚洲精品免费网站| 日韩美女主播视频| www.欧美视频| 国产日韩在线视频| 亚洲欧美国产精品| 欧美日本啪啪无遮挡网站| 国产精品久久久久99| 亚洲精品久久久一区二区三区| 91理论片午午论夜理片久久| 亚洲欧美日韩久久久久久| 欧美性xxxx在线播放| 成人啪啪免费看| 日韩中文在线中文网在线观看| 国产一区二区丝袜高跟鞋图片| 国产美女精品视频免费观看| 中文字幕亚洲情99在线| 91精品视频免费| 日韩免费在线视频| 欧美肥婆姓交大片| 精品国产1区2区| zzijzzij亚洲日本成熟少妇| 不卡毛片在线看| 欧美大肥婆大肥bbbbb| 日韩精品免费在线| 91精品综合久久久久久五月天| 色天天综合狠狠色| 欧美视频中文在线看| 欧美一级高清免费| 国产精品欧美亚洲777777| 国产欧美久久一区二区| 国产视频精品va久久久久久| 欧美成aaa人片在线观看蜜臀| 日韩中文字幕亚洲| 国产xxx69麻豆国语对白| 欧美黄色三级网站| 91超碰中文字幕久久精品| 少妇精69xxtheporn| 久久男人av资源网站| 国产91精品黑色丝袜高跟鞋| 亚洲精品白浆高清久久久久久| 九九热精品在线| 欧美日本黄视频| 久久免费国产精品1| 亚洲精品福利在线| 欧美国产精品人人做人人爱| 精品久久久久久久久久ntr影视| 欧美午夜女人视频在线| 亚洲欧美中文日韩在线v日本| 2019亚洲男人天堂| 日韩成人网免费视频| 欧美精品激情blacked18| 欧美日韩国产精品一区| 91精品在线观看视频| 国产丝袜一区二区三区| 亚洲人成在线观看| 久久久久久亚洲| 中文字幕日韩精品在线| 色综合亚洲精品激情狠狠| 国产精品久久久久久久久久东京| 91在线免费看网站| 国产91精品久久久久| 国产精品久久久久久av| 欧美精品久久久久a| 最近中文字幕mv在线一区二区三区四区| 懂色aⅴ精品一区二区三区蜜月| 亚洲精品99久久久久中文字幕| 欧美精品在线极品| 国产精品视频在线观看| 亚洲精品福利资源站|