要注意 MAX(AGENTID),MAX(日期) 可能不是出現在同一行資料
也就是 MAX(日期) 出現的資料行,並不是對應到MAX(AGENTID)
如果查詢不能忍受這個錯誤的話,還是用IN比較正確
※ 引述《misssun (我要炸掉了)》之銘言:
: ※ 引述《ClareQ (人比人Cheese人)》之銘言:
: : 看了你最終的SQL語法,
: : 還是覺得不需要使用IN的子查詢,
: : 因為在以customerid分群,count(*)=1的情況,
: : 日期和agentid也只會有一筆資料,
: : 故可以用MAX()或MIN()等聚合函數一起選取,
: : 其結果並不會有差別,如下:
: : SELECT
: : CUSTOMERID,MAX(AGENTID),MAX(日期)
: : FROM AA
: : WHERE (日期區間)
: : GROUP BY CUSTOMERID
: : HAVING COUNT(*)=1;
: 其實之前也有想過用這種方法,但是有同事跟我說這是偷吃步~
: 不太正規,所以我就沒有寫來run看看~
: 但是看到ClareQ大大也推薦用這種加函數法去run,我就來試看看囉~
: 結果搜尋出來的資料果然跟用in是一樣的,
: 速度還比較快呢! 真是厲害!! 3Q3Q囉~~~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.70.51.229