精品综合在线_精品国产乱码久久久久久88av_成人在线观看av_免费一区二区三区_成人免费视频观看视频_翔田千里亚洲一二三区_91精品国自产在线观看_成人激情av_精品国产福利_国产日韩精品推荐

技術(shù)知識
NEWS CENTRE
首頁
>
新聞中心
>
類似功能的操作:QLite 實現(xiàn)if not exist
類似功能的操作:QLite 實現(xiàn)if not exist
2021-08-24 閱讀:2869

這篇文章主要介紹了SQLite 實現(xiàn)if not exist 類似功能的操作,具有很好的參考價值,希望對大家有所幫助。

需要實現(xiàn):

if not exists(select * from ErrorConfig where Type='RetryWaitSeconds')
begin
  insert into ErrorConfig(Type,Value1)
  values('RetryWaitSeconds','3')
end

只能用:

insert into ErrorConfig(Type,Value1)
select 'RetryWaitSeconds','3'
where not exists(select * from ErrorConfig where Type='RetryWaitSeconds')

因為 SQLite 中不支持SP

補充:sqlite3中NOT IN 不好用的問題

在用sqlite3熟悉SQL的時候遇到了一個百思不得其解的問題,也沒有在google上找到答案。雖然最后用“迂回”的方式碰巧解決了這個問題,但暫時不清楚原理是什么,目前精力有限,所以暫時記錄下來,有待繼續(xù)研究。

數(shù)據(jù)庫是這樣的:

CREATE TABLE book (
 id integer primary key,
 title text,
 unique(title)
);
CREATE TABLE checkout_item (
 member_id integer,
 book_id integer,
 movie_id integer,
 unique(member_id, book_id, movie_id) on conflict replace,
 unique(book_id),
 unique(movie_id)
);
CREATE TABLE member (
 id integer primary key,
 name text,
 unique(name)
);
CREATE TABLE movie (
 id integer primary key,
 title text,
 unique(title)
);

該數(shù)據(jù)庫包含了4個表:book, movie, member, checkout_item。其中,checkout_item用于保存member對book和movie的借閱記錄,屬于關(guān)系表。

問一:哪些member還沒有借閱記錄?

SQL語句(SQL1)如下:

1SELECT * FROM member WHERE id NOT IN(SELECT member_id FROM checkout_item);

得到了想要的結(jié)果。

問二:哪些book沒有被借出?

這看起來與上一個是類似的,于是我理所當然地運行了如下的SQL語句(SQL2):

1SELECT * FROM book WHERE id NOT IN(SELECT book_id FROM checkout_item);

可是——運行結(jié)果沒有找到任何記錄! 我看不出SQL2與SQL1這兩條語句有什么差別,難道是book表的問題?于是把NOT去掉,運行了如下查詢語句:

1SELECT * FROM book WHERE id IN(SELECT book_id FROM checkout_item);

正確返回了被借出的book,其數(shù)量小于book表里的總行數(shù),也就是說確實是有book沒有借出的。

接著google(此處省略沒有營養(yǎng)的字),沒找到解決方案。可是,為什么member可以,book就不可以呢?它們之前有什么不同?仔細觀察,發(fā)現(xiàn)checkout_item里的book_id和movie_id都加了一個unique,而member_id則沒有。也許是這個原因?不用id了,換title試試:

SELECT * FROM book WHERE
 title NOT IN(
 SELECT title FROM book WHERE id IN(
 SELECT book_id FROM checkout_item));

 

確實很迂回,但至少work了。。。

問題原因:當NOT碰上NULL

事實是,我自己的解決方案只不過是碰巧work,這個問題產(chǎn)生跟unique沒有關(guān)系。邱俊濤的解釋是,“SELECT book_id FROM checkout_item”的結(jié)果中含有null值,導致NOT也返回null。當一個member只借了movie而沒有借book時,產(chǎn)生的checkout_item中book_id就是空的。

解決方案是,在選擇checkout_item里的book_id時,把值為null的book_id去掉:

1SELECT * FROM book WHERE id NOT IN(SELECT book_id FROM checkout_item WHERE book_id IS NOT NULL);

總結(jié)

我在解決這個問題的時候方向是不對的,應(yīng)該像調(diào)試程序一樣,去檢查中間結(jié)果。比如,運行如下語句,結(jié)果會包含空行:

1SELECT book_id FROM checkout_item

而運行下列語句,結(jié)果不會包含空行:

1SELECT member_id FROM checkout_item

這才是SQL1與SQL2兩條語句執(zhí)行過程中的差別。根據(jù)這個差別去google,更容易找到答案。當然了,沒有NULL概念也是我“百思不得其解”的原因。


13560189272
地址:廣州市天河區(qū)黃埔大道西201號金澤大廈808室
COPYRIFHT ? 2010-2020 廣州市名聯(lián)網(wǎng)絡(luò)科技有限公司 ALL RIGHTS RESERVED 粵ICP備10203057號
  • 這里是二維碼
精品综合在线_精品国产乱码久久久久久88av_成人在线观看av_免费一区二区三区_成人免费视频观看视频_翔田千里亚洲一二三区_91精品国自产在线观看_成人激情av_精品国产福利_国产日韩精品推荐
亚洲欧美电影院| 日本一不卡视频| 欧美在线一区二区| 91在线观看成人| 91论坛在线播放| 国产成人av电影免费在线观看| 一区二区三区欧美在线观看| 亚洲成人手机在线| 一区二区视频免费在线观看| 国产99一区视频免费| 精品国产免费一区二区三区四区| 日韩欧美一区在线观看| 精品黑人一区二区三区久久| 经典三级一区二区| 色成人在线视频| 欧美一区二视频| 亚洲精品国产成人久久av盗摄| 看电影不卡的网站| 精品女同一区二区| 精品一区精品二区高清| 欧美日韩三级一区| 亚洲国产乱码最新视频| 国产suv精品一区二区883| 亚洲乱码中文字幕| 日韩一区二区三区在线视频| 国产精品性做久久久久久| 3d动漫精品啪啪1区2区免费| 亚洲美女视频在线| 日韩精品一区二区三区三区免费 | 成人久久18免费网站麻豆| 日韩欧美资源站| eeuss鲁一区二区三区| 久久综合一区二区| 免费成人小视频| 欧美日韩一区视频| 国产成人精品三级麻豆| 欧美少妇bbb| 亚洲成精国产精品女| 欧美精彩视频一区二区三区| 久久99精品久久久| 亚洲韩国一区二区三区| 亚洲免费在线视频一区 二区| 精品三级在线看| 欧美精品v国产精品v日韩精品| 亚洲高清免费视频| 18涩涩午夜精品.www| 成人app软件下载大全免费| 国产精品女上位| 99视频在线观看一区三区| 久久国产精品无码网站| 日韩精品91亚洲二区在线观看 | 最好看的中文字幕久久| 丰满亚洲少妇av| 青青草国产成人av片免费| 亚洲国产sm捆绑调教视频 | 精品视频一区三区九区| 91香蕉视频污| 99在线视频精品| av中文字幕亚洲| 99re这里只有精品视频首页| 天天影视色香欲综合网老头| 精品国产91亚洲一区二区三区婷婷| 欧美视频中文字幕| 欧美色精品天天在线观看视频| 色av成人天堂桃色av| 在线看国产日韩| 欧美三级资源在线| 日韩欧美色综合网站| 精品国产三级a在线观看| 国产日产欧美一区二区三区| 国产精品天美传媒| 一区二区在线观看视频| 日韩精品免费视频人成| 国产一区二区在线电影| 亚洲综合丝袜美腿| 国产精品剧情在线亚洲| 91精品国产91综合久久蜜臀| 在线播放91灌醉迷j高跟美女| 欧美日韩中文一区| 日韩欧美国产三级| 国产精品国产三级国产aⅴ无密码| 自拍偷拍亚洲综合| 美腿丝袜一区二区三区| 一区二区三区毛片| 五月天婷婷综合| 8x8x8国产精品| www久久久久| 亚洲丝袜制服诱惑| 免费成人结看片| 成人18视频日本| 日韩欧美一区在线观看| 亚洲码国产岛国毛片在线| 日本一区中文字幕| fc2成人免费人成在线观看播放| 欧美日韩mp4| 欧美性色黄大片手机版| 欧美亚洲综合色| 国产日本欧洲亚洲| 欧美在线免费视屏| 欧美精品一区二区三区蜜臀 | 欧美三区在线视频| 精品国产乱码久久久久久老虎| 国产精品私房写真福利视频| 五月开心婷婷久久| 不卡一区二区在线| 欧美不卡一二三| 亚洲成人中文在线| 94-欧美-setu| 久久久久国色av免费看影院| 欧美视频一区二| 国产日韩精品一区二区三区在线| 丝袜脚交一区二区| 97se亚洲国产综合自在线 | 国产日韩一级二级三级| 五月天激情小说综合| 99久久伊人精品| 国产精品视频免费看| 国精产品一区一区三区mba视频| 麻豆精品一区二区三区| 本田岬高潮一区二区三区| 26uuu国产在线精品一区二区| 亚洲国产sm捆绑调教视频| 97精品久久久午夜一区二区三区| 久久久蜜臀国产一区二区| 日本不卡一区二区| 欧美日韩在线综合| 午夜欧美在线一二页| 欧美午夜精品电影| 一区二区三区精品在线观看| 北条麻妃一区二区三区| 国产精品久久久久久久久果冻传媒| 国产成人丝袜美腿| 中文字幕日韩精品一区| av不卡一区二区三区| 综合欧美亚洲日本| 色综合 综合色| 3d成人h动漫网站入口| 日日夜夜精品视频天天综合网| 色综合久久久久久久| 亚洲精品免费在线播放| 在线观看91视频| 奇米综合一区二区三区精品视频| 6080国产精品一区二区| 另类的小说在线视频另类成人小视频在线| 欧美日韩中文精品| 精品午夜久久福利影院| 久久只精品国产| 99r精品视频| 日日嗨av一区二区三区四区| 欧美一区二区高清| 国产成人av一区二区三区在线 | 成人激情动漫在线观看| 亚洲色图制服丝袜| 91精品国产综合久久福利软件| 麻豆精品视频在线观看免费| 久久久综合精品| 在线免费观看不卡av| 美女视频黄 久久| 国产精品伦理在线| 91麻豆精品国产自产在线观看一区| 久久99精品国产.久久久久久| 久久久综合网站| 91成人免费网站| 国产成人在线看| 三级影片在线观看欧美日韩一区二区| 精品久久久久久久久久久久包黑料 | 亚洲精选视频在线| 91精品国产91综合久久蜜臀| 国产aⅴ综合色| 午夜电影网亚洲视频| 国产精品入口麻豆原神| 欧美一级理论性理论a| 99国产精品久久久久| 久久国产生活片100| 亚洲午夜视频在线| 综合久久久久久| 国产三级精品三级| 欧美一区二区三区精品| 91免费国产视频网站| 国产一区二区三区日韩| 视频一区在线播放| 亚洲精品国久久99热| 国产欧美日韩精品a在线观看| 欧美一区二区三区四区久久| 北岛玲一区二区三区四区| 国产一区二区主播在线| 日韩国产欧美在线播放| 一区二区三区欧美激情| 自拍视频在线观看一区二区| 久久色.com| 久久女同性恋中文字幕| 日韩三级视频在线观看| 91.com视频| 91精品在线免费| 911精品国产一区二区在线| 欧美日韩一区二区在线观看视频 | www久久精品| 精品国产乱码久久久久久1区2区| 91麻豆精品国产91| 欧美一区二区精品在线|