假設(shè)是數(shù)組形式如:需要查1,2,3,4,5,6的數(shù)據(jù)就用in :select * from table where num in(1,2,3,4,5,6)
在烏魯木齊等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站設(shè)計制作、網(wǎng)站設(shè)計 網(wǎng)站設(shè)計制作按需網(wǎng)站建設(shè),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計,成都全網(wǎng)營銷,成都外貿(mào)網(wǎng)站建設(shè)公司,烏魯木齊網(wǎng)站建設(shè)費用合理。
如果需要查詢范圍內(nèi)的,如:查詢1-6范圍內(nèi)的可以:
select * from table where num 1
and num 6
出現(xiàn)在select語句中的select語句,稱為子查詢或內(nèi)查詢。
外部的select查詢語句,稱為主查詢或外查詢。
測試數(shù)據(jù)比較多,放在我的個人博客上了。
瀏覽器中打開鏈接:
mysql中執(zhí)行里面的 javacode2018_employees庫 部分的腳本。
成功創(chuàng)建 javacode2018_employees 庫及5張表,如下:
運行最后一條結(jié)果如下:
in,any,some,all分別是子查詢的關(guān)鍵詞之一。
in :in常用于where表達式中,其作用是查詢某個范圍內(nèi)的數(shù)據(jù)
any和some一樣 : 可以與=、、=、、=、結(jié)合起來使用,分別表示等于、大于、大于等于、小于、小于等于、不等于其中的任何一個數(shù)據(jù)。
all :可以與=、、=、、=、結(jié)合使用,分別表示等于、大于、大于等于、小于、小于等于、不等于其中的其中的所有數(shù)據(jù)。
下文中會經(jīng)常用到這些關(guān)鍵字。
運行結(jié)果:
not in的情況下,子查詢中列的值為NULL的時候,外查詢的結(jié)果為空。
建議:建表是,列不允許為空。
線上出了一個bug:參與集福氣活動的很多玩家獎勵少發(fā)了。
要補發(fā)給玩家的獎勵可以通過表A和獎勵發(fā)放表計算得出(需要補發(fā)的獎勵 = 表A - 實際獎勵發(fā)放表)。
現(xiàn)在的做法是寫個job把這份補發(fā)獎勵的名單拉取來(沒錯不等關(guān)服維護了,直接在線跑job)。這里要強調(diào)一點:只有在“實際獎勵發(fā)放表”存在的玩家才有可能需要補發(fā)獎勵。
第三個方法是我用來湊數(shù)的,請各位千萬不要這么做。除非實際獎勵發(fā)放表中玩家人數(shù)只有個位數(shù)。那到底是用第一個還是第二個呢?這個問題主要看兩點:
采用方法二:范圍查詢的方式把數(shù)據(jù)加到內(nèi)存中然后再篩選
需要查詢的MySQL數(shù)據(jù)很多(玩家名單list有幾萬個),使用范圍查找能加快查詢速度并且即使將表A的數(shù)據(jù)全部加載在內(nèi)存中job服務(wù)器也是沒有壓力。