优化“不在”查询

时间:2010-06-07 05:28:37

标签: sql

请帮助优化此查询:

SELECT ts.SiteId, COUNT(ts.SiteId) AS Count 
FROM ts 
WHERE ts.SiteId not in 
   (SELECT ts.SiteId FROM ts WHERE ts.uniqueid = 'xxx') 
GROUP BY ts.SiteId ORDER BY Count DESC

2 个答案:

答案 0 :(得分:3)

SELECT ts.SiteId, COUNT(ts.SiteId) AS Count, 
MAX(CASE WHEN ts.uniqueid = 'xxx' THEN 1 ELSE 0 END) As XXXUniqueID
FROM ts 
GROUP BY ts.SiteId
HAVING XXXUniqueID = 0
ORDER BY Count DESC

答案 1 :(得分:0)

在SQL 2005 CTE中,它可能如下所示:


;
WITH 
e AS
(
    SELECT ts.SiteId FROM ts 
    EXCEPT
    SELECT ts.SiteId FROM ts WHERE ts.uniqueid = 'xxx'
)
SELECT e.SiteId, COUNT(e.SiteId) AS Count 
FROM e
GROUP BY e.SiteId ORDER BY Count DESC