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

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

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

需要實(shí)現(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')

因?yàn)?SQLite 中不支持SP

補(bǔ)充:sqlite3中NOT IN 不好用的問(wèn)題

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

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

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ù)庫(kù)包含了4個(gè)表:book, movie, member, checkout_item。其中,checkout_item用于保存member對(duì)book和movie的借閱記錄,屬于關(guān)系表。

問(wèn)一:哪些member還沒(méi)有借閱記錄?

SQL語(yǔ)句(SQL1)如下:

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

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

問(wèn)二:哪些book沒(méi)有被借出?

這看起來(lái)與上一個(gè)是類(lèi)似的,于是我理所當(dāng)然地運(yùn)行了如下的SQL語(yǔ)句(SQL2):

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

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

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

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

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

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

 

確實(shí)很迂回,但至少work了。。。

問(wèn)題原因:當(dāng)NOT碰上NULL

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

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

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

總結(jié)

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

1SELECT book_id FROM checkout_item

而運(yùn)行下列語(yǔ)句,結(jié)果不會(huì)包含空行:

1SELECT member_id FROM checkout_item

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


13560189272
地址:廣州市天河區(qū)黃埔大道西201號(hào)金澤大廈808室
COPYRIFHT ? 2010-2020 廣州市名聯(lián)網(wǎng)絡(luò)科技有限公司 ALL RIGHTS RESERVED 粵ICP備10203057號(hào)
  • 這里是二維碼
精品综合在线_精品国产乱码久久久久久88av_成人在线观看av_免费一区二区三区_成人免费视频观看视频_翔田千里亚洲一二三区_91精品国自产在线观看_成人激情av_精品国产福利_国产日韩精品推荐
成人午夜免费在线观看| 乱精品一区字幕二区| 欧美三级 欧美一级| 久久久午夜影院| 久久精品国产亚洲av香蕉| 国产情侣在线播放| 久久精品五月天| 天堂av网手机版| 999久久久精品视频| 国产免费一区二区三区四区| 久久精品国产亚洲av高清色欲 | 国产一二三四视频| 人妻精品久久久久中文| 一区二区三区在线观看av| 亚洲第一中文av| 国产综合视频在线| 在线观看不卡的av| 色婷婷粉嫩av| 欧美日韩国产精品综合| 欧美黑人精品一区二区不卡| 国产精品系列视频| av免费一区二区| 青青草原国产在线视频| 国产毛片欧美毛片久久久| 五月婷婷丁香在线| 美女网站视频色| 久久精品视频7| 国产精久久一区二区三区| 国产色视频在线播放| 婷婷伊人综合中文字幕| 久久久久久久黄色片| 亚洲熟女毛茸茸| www.久久久久久久久久| 国产亚洲精品久久久久久豆腐| 国产伦精品一区二区三区视频我| 久久99久久98精品免观看软件| 精品视频第一页| 亚洲 欧美 视频| 国产美女无遮挡永久免费| 精品人妻一区二区免费| 三级网站在线看| 极品国产91在线网站| 亚洲毛片一区二区三区| 人妻无码一区二区三区| 中文字幕人妻丝袜乱一区三区| 久久高清免费视频| 天堂中文字幕在线观看| 亚洲影院一区二区三区| 精品免费久久久| 亚洲国产日韩在线一区| 黄色在线观看国产| 亚洲精品国产精品乱码不卡| 麻豆av免费看| 超碰中文字幕在线观看| 午夜一区二区三区四区| 久久婷婷中文字幕| 91丨porny丨在线中文| 免费国产黄色片| 国产色片在线观看| 伊人中文字幕在线观看| 国产一二三四在线| 一级黄色片毛片| 午夜久久久久久久久久| 久久久久久久极品| 国产极品在线播放| 成人h动漫精品一区二区下载| 日本天堂中文字幕| 欧美日韩人妻精品一区二区三区| wwww.国产| www五月天com| 99久久精品日本一区二区免费| 伊人久久久久久久久久久久| 人妻少妇一区二区| 久久久国产欧美| 国产一级淫片a| 国产ts在线观看| 精品一区二区三孕妇视频| 国产又粗又黄又爽视频| 国产婷婷色一区二区在线观看| www日本高清| 国产视频在线免费观看 | 欧美a∨亚洲欧美亚洲| 国精产品一区一区二区三区mba| 国产99在线 | 亚洲| 久久美女免费视频| 日韩女同一区二区三区| 中文字幕亚洲高清| 国产精品一区二区免费视频 | www.日本高清| 国产一区二区视频免费| 久久久久久无码午夜精品直播 | 在线中文字幕网站| 亚洲精品国产一区二区三区| 国产黄色一级大片| 久久综合综合久久| 亚洲国产综合久久| 精品无码免费视频| 91丨porny丨在线中文| 青娱乐在线视频免费观看| 亚洲精品久久久久久| 黄色av网站免费在线观看| 日本黄色一区二区三区| 欧美手机在线观看| 任你躁av一区二区三区| 中文字幕一区二区人妻在线不卡| 欧美图片一区二区| 天天爱天天干天天操| 日韩av在线播| 欧美激情视频二区| 精品伦一区二区三区 | 欧美国产在线看| a天堂在线观看视频| 日韩中文字幕免费在线观看| 久久精品无码一区| 国产主播av在线| 国产毛片aaa| 精品国产aaa| 人人妻人人爽人人澡人人精品| 夜夜爽久久精品91| 无码人妻一区二区三区精品视频| 狠狠躁夜夜躁人人爽天天高潮| 99久久夜色精品国产亚洲| 中文在线观看av| www毛片com| 久久国产精品国语对白| 免费一级全黄少妇性色生活片| 九九在线观看视频| 无码人妻aⅴ一区二区三区69岛| 色欲欲www成人网站| 天堂av8在线| www.天天射.com| 蜜桃色一区二区三区| 亚洲第一区第二区第三区| 国产91免费在线观看| 免费看一级黄色| 中文字幕一区二区三区乱码不卡| 不卡的av中文字幕| 欧美一级裸体视频| 国产小视频一区| 99视频免费看| 人妻丰满熟妇av无码区| 欧美人妻一区二区三区| 神马久久久久久久久久| 天堂8在线视频| www.国产麻豆| 精品久久久中文字幕人妻| 久久国产一级片| 午夜不卡福利视频| 福利视频999| 日本人妻丰满熟妇久久久久久| 亚洲精品久久久中文字幕| 韩国三级丰满少妇高潮| 国产三级国产精品| 婷婷六月天在线| 国产成人精品亚洲| 永久久久久久久| 国内精品国产成人国产三级| 亚洲a视频在线观看| 精品国产aⅴ一区二区三区东京热| 五月天激情国产综合婷婷婷| 精品久久久久一区二区 | 91青青草视频| 色呦色呦色精品| 亚洲男人在线天堂| 国产一区二区三区四区五区六区 | 国产原创视频在线| 一级久久久久久| 日日操免费视频| 欧美高清精品一区二区| 国产又大又黑又粗| 国产高清视频网站| 91精品人妻一区二区| 中国美女乱淫免费看视频| 日韩免费成人av| 日韩精品视频免费播放| xxxx国产视频| 国产成人av免费| 国产三级日本三级在线播放| 国产精品18在线| 国产中文字幕免费| 久久aaaa片一区二区| 久久精品www| 天堂av中文字幕| 亚洲精品乱码久久久久久动漫| 中文字幕无码日韩专区免费| 999久久久久久| 久久久久久av无码免费看大片 | 国产乱码在线观看| 国产精品九九九九| 国产又黄又粗又长| 男女男精品视频网站| 欧美日韩怡红院| 国产高潮呻吟久久| 99精品国产99久久久久久97| 国产黄色片在线免费观看| 久久精品国产成人av| 亚欧激情乱码久久久久久久久| 朝桐光av在线| 国产在线观看黄色| 人妻无码一区二区三区|