最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql中not?in隱含陷阱詳解

 更新時間:2022年04月12日 15:53:54   作者:make_888  
NOT?IN?的作用和?IN?恰好相反,NOT?IN?用來判斷表達(dá)式的值是否不存在于給出的列表中;如果不是,返回值為?1,否則返回值為?0,下面這篇文章主要給大家介紹了關(guān)于mysql中not?in隱含陷阱的相關(guān)資料,需要的朋友可以參考下

1、現(xiàn)象

1.1、使用not int 子查詢

SELECT
	* 
FROM
	`users` 
WHERE
	id NOT IN ( SELECT uid FROM role_user )

查詢結(jié)果為:

1.2、結(jié)果對嗎?

當(dāng)然不對

1.2.1、查詢一下role_user的uid結(jié)果

SELECT uid FROM role_user

查詢結(jié)果為:

1.2.2、查詢一下users表的數(shù)據(jù)

SELECT * FROM `users` 

1.2.3、分析查詢結(jié)果

role_user表的數(shù)據(jù)uid只有一個1和null,所以說應(yīng)該能查詢到users表的id=2的數(shù)據(jù)

實(shí)際執(zhí)行的sql為:

SELECT
	* 
FROM
	`users` 
WHERE
	id NOT IN ( 1,null )

但是查詢的結(jié)果依然為:

如果我把sql改一下:

SELECT
	* 
FROM
	`users` 
WHERE
	id NOT IN ( 1)

所以可以看到是由于not in 中的結(jié)果有null 導(dǎo)致無法查詢出數(shù)據(jù)的

2、為什么會產(chǎn)生這樣的結(jié)果?

2.1、null屬于什么?

2.2、not in 的底層實(shí)現(xiàn)

SELECT
	* 
FROM
	`users` 
WHERE
	id NOT IN ( 1,null )

not in 多個值的實(shí)現(xiàn)原理為

SELECT
	* 
FROM
	`users` 
WHERE
	id != 1
	and id != null

第一反應(yīng)是不是覺得是符合的啊?users表的id是主鍵,所以說都不為空值啊

但是為什么會這樣?

我們來執(zhí)行一個sql

select 1 !=null

可以看到查詢結(jié)果為Null,所以說上面的sql里面的id!=null的結(jié)果也是null

由于Null無法參與boolean運(yùn)算,默認(rèn)為false,所以說上面的條件中and后面的id!=null永遠(yuǎn)是false

3、結(jié)論

說明not in中如果值有null,那么將查詢不到數(shù)據(jù)

到此這篇關(guān)于mysql中not in隱含陷阱的文章就介紹到這了,更多相關(guān)mysql not in隱含陷阱內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 修改MySQL所有表的編碼或修改某個字段的編碼步驟詳解

    修改MySQL所有表的編碼或修改某個字段的編碼步驟詳解

    這篇文章主要給大家介紹了關(guān)于修改MySQL所有表的編碼或修改某個字段編碼的相關(guān)資料,在進(jìn)行數(shù)據(jù)庫編碼更改之前,需要先確定目標(biāo)編碼格式,常見的編碼格式有UTF-8、GBK等,需要的朋友可以參考下
    2023-12-12
  • Nacos配置MySQL8的方法

    Nacos配置MySQL8的方法

    這篇文章主要介紹了Nacos配置MySQL8的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • mysql中insert并發(fā)問題(on?DUPLICATE?KEY?UPDATE)

    mysql中insert并發(fā)問題(on?DUPLICATE?KEY?UPDATE)

    本文主要介紹了mysql中insert并發(fā)問題(on?DUPLICATE?KEY?UPDATE),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • MySQL中用通用查詢?nèi)罩菊页霾樵兇螖?shù)最多的語句的教程

    MySQL中用通用查詢?nèi)罩菊页霾樵兇螖?shù)最多的語句的教程

    這篇文章主要介紹了MySQL中用通用查詢?nèi)罩菊页霾樵兇螖?shù)最多的語句的教程,文中附帶了通用查詢?nèi)罩镜拈_啟和清除技巧,需要的朋友可以參考下
    2015-12-12
  • MySQL時區(qū)查看及設(shè)置全過程

    MySQL時區(qū)查看及設(shè)置全過程

    在服務(wù)器環(huán)境下,MySQL默認(rèn)時區(qū)可能是UTC,需注意應(yīng)用時區(qū)設(shè)置,若查詢條件使用Now()/sysdate(),會根據(jù)MySQL時區(qū)查詢,導(dǎo)致時間錯亂,可使用`selectnow()`檢查時間準(zhǔn)確性,查看和修改MySQL時區(qū)的方法包括使用命令和修改配置文件
    2025-01-01
  • Mysql索引創(chuàng)建刪除及使用代價

    Mysql索引創(chuàng)建刪除及使用代價

    這篇文章主要為大家介紹了Mysql索引創(chuàng)建刪除及使用代價詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Mysql深入探索之Explain執(zhí)行計(jì)劃詳析

    Mysql深入探索之Explain執(zhí)行計(jì)劃詳析

    這篇文章主要給大家介紹了關(guān)于Mysql深入探索之Explain執(zhí)行計(jì)劃的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • MySQL存儲Json字符串遇到的問題與解決方法

    MySQL存儲Json字符串遇到的問題與解決方法

    要在MySQL中存儲數(shù)據(jù),必須定義數(shù)據(jù)庫和表結(jié)構(gòu),下面這篇文章主要給大家介紹了關(guān)于MySQL存儲Json字符串遇到的問題與解決方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • MySQL 數(shù)據(jù)庫約束、聚合查詢和聯(lián)合查詢使用案例

    MySQL 數(shù)據(jù)庫約束、聚合查詢和聯(lián)合查詢使用案例

    這篇文章主要介紹了MySQL 數(shù)據(jù)庫約束、聚合查詢和聯(lián)合查詢使用案例,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • MySQL驗(yàn)證用戶權(quán)限的方法

    MySQL驗(yàn)證用戶權(quán)限的方法

    這篇文章主要介紹了MySQL驗(yàn)證用戶權(quán)限的方法,需要的朋友可以參考下
    2015-11-11

最新評論

秦皇岛市| 弋阳县| 乡城县| 阳新县| 兰州市| 青海省| 商南县| 遂宁市| 永新县| 荣成市| 绩溪县| 修水县| 长治县| 沾益县| 四子王旗| 友谊县| 临潭县| 浠水县| 兴安盟| 丽江市| 勃利县| 聂拉木县| 镇平县| 安塞县| 永春县| 息烽县| 三河市| 和平县| 八宿县| 邯郸县| 赤峰市| 福鼎市| 砚山县| 博客| 秦皇岛市| 博白县| 德令哈市| 阜新市| 兰西县| 尚志市| 邵阳县|