我有:
TABLE: USERS
UID | NAME
1 | Bob
2 | John
我有:
TABLE: HITS
HITID | UID
1 | 1
2 | 2
3 | 2
4 | 1
5 | 2
6 | 2
我想:
UID | HITS
1 | 2
2 | 4
看起来很简单,但我似乎无法做到这一点?
答案 0 :(得分:4)
试试这个:
SELECT UID, COUNT(UID) HITS FROM HITS
GROUP BY UID;
答案 1 :(得分:2)
这可能会帮助你
DECLARE @USERS TABLE(UID INT, NAME VARCHAR(20))
INSERT INTO @USERS (UID,NAME) VALUES ('1','Bob'),('2','John')
DECLARE @HITS TABLE(HITID INT,UID INT)
INSERT INTO @HITS (HITID,UID) VALUES('1','1'),('2','2'),('3','2'),('4','1'),('5','2'),('6','2')
如果要使用USERS表和HITS表
,请使用JOINSELECT U.UID,COUNT(H.HITID) AS HITS FROM @USERS AS U INNER JOIN @HITS AS H ON U.UID = H.UID GROUP BY U.UID
或使用简单查询如果您只想使用HITS表
SELECT UID, COUNT(UID) HITS FROM @HITS GROUP BY UID
我也在这里创建了Temp表。
答案 2 :(得分:1)
SELECT b.UID, COUNT(b.UID) HITS FROM HITS a, USERS b
WHERE a.UID=b.UID
GROUP BY UID
这应该有效
答案 3 :(得分:1)
这可以解决问题
SELECT H.UID, COUNT(*) AS 'HITS'
FROM HITS H
GROUP BY H.UID
答案 4 :(得分:0)
如果您想拥有用户名,那么您需要加入
SELECT a.Name, COUNT(*) totalCount
FROM users a
INNER JOIN HITS b
ON a.UID = b.UID
GROUP BY a.UID