伙计们,我有一个查询,基本上选择我们用户使用的最新浏览器。
这是我们的(简化的)表结构
HITS_TABLE
----------
USERID
BROWSER
HITSDATE
USER_TABLE
----------
USERID
USERNAME
这是我查询用户使用的最新浏览器的方式
SELECT U.*, H.BROWSER
FROM USER_TABLE U
CROSS APPLY
(SELECT TOP 1 BROWSER
FROM HITS_TABLE
WHERE HITS_TABLE.USERID = U.USERID
ORDER BY HITS_TABLE.HITSDATE DESC
)as H
HITS_TABLE 是几天前刚刚添加的。
因此,该查询只是我们添加 HITS_TABLE 后访问我们网站的结果用户,并消除了其他用户。
这是示例案例
USER_TABLE
-------------------
USERID USERNAME
-------------------
1 'Spolski'
2 'Atwoord
3 'Dixon'
HITS_TABLE
------------------------------
USERID HITSDATE BROWSER
------------------------------
2 15/8/2009 'Firefox 3.5'
1 16/8/2009 'IE 6'
2 16/8/2009 'Chrome'
这是示例结果
------------------------------
USERID USERNAME BROWSER
------------------------------
1 'Spolsky' 'IE 6'
2 'Atwoord' 'Chrome'
但是,我想使用“未知”浏览器添加其他用户。这是我想要的结果
------------------------------
USERID USERNAME BROWSER
------------------------------
1 'Spolsky' 'IE 6'
2 'Atwoord' 'Chrome'
3 'Dixon' 'Unknown'
我相信它可以通过 LEFT OUTER JOIN 来实现。但我总是有这个:(我不想要这个结果)
------------------------------
USERID USERNAME BROWSER
------------------------------
1 'Spolsky' 'IE 6'
2 'Atwoord' 'Chrome'
2 'Atwoord' 'Firefox 3.5'
3 'Dixon' 'Unknown'
我希望我的问题很清楚。