作者flakchen (flak)
看板Database
标题Re: [SQL ] 如何选出count(*)=1 的资料?
时间Mon Aug 20 11:36:37 2007
要注意 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