看板 Database 關於我們 聯絡資訊
要注意 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