IN操作符
IN操作符允許我們?cè)赪HERE子句中規(guī)定多個(gè)值迄埃。
這個(gè)操作符可以讓我們?cè)诒碇羞x取有一定規(guī)律的特定值脑漫,比如多個(gè)同樣的訂單選取最新的一個(gè)。
SQL IN 語(yǔ)法
SELECT 列名
FROM 表明
WHERE 列名 IN (value1,value2,...)
例子
簡(jiǎn)單的例子網(wǎng)上有扮休,這里說(shuō)一個(gè)復(fù)雜點(diǎn)的例子
有如上圖所示的表
查詢要求
1.我們要在指定chain_id上只查詢一條時(shí)間最新的數(shù)據(jù)锣枝。比如ID 4和5 chain_id都為4厢拭,但是我們只能顯示7月3日的ID為5的數(shù)據(jù)。
2.這條數(shù)據(jù)的on_off如果為0我們是不抽取這條數(shù)據(jù)出來(lái)的撇叁。
SELECT *
FROM file
WHERE created_at in (
SELECT MAX(created_at)
FROM file WHERE chain_id in (1,2,3,4) && on_off <> 0
GROUP BY chain_id
);
查詢結(jié)果
SQL語(yǔ)句的解析
上面使用了兩個(gè)WHERE...IN供鸠,第一層我們想找時(shí)間最大的數(shù)據(jù)條目,第二層我們要求同時(shí)這個(gè)數(shù)據(jù)是我們的制定的chain_id,并且on_off不能為0 陨闹。同時(shí)滿足三個(gè)條件得出我們的結(jié)果楞捂。
實(shí)際上是先找出了指定chain_id上on_off不為0的數(shù)據(jù),然后再?gòu)倪@個(gè)數(shù)據(jù)集當(dāng)中找到指定chain_id時(shí)間最大的那些數(shù)據(jù)趋厉。