2017-07-13 23 views
0

這裏是我的表結構:如何根據特定時期的聲譽來選擇用戶?

-- users 
+----+--------+--------------------+ 
| id | name | other columns ... 
+----+--------+--------------------+ 

-- votes 
+----+---------+---------+-------+------------+ 
| id | user_id | post_id | value | date_time | 
+----+---------+---------+-------+------------+ 
| 1 | 234234 | 3443 | 1  | 1442684886 | -- For example 
+----+---------+---------+-------+------------+ 

我想在上週選擇前20名用戶。我怎樣才能做到這一點?


這裏是我當前的查詢:

SELECT SUM(v.value) score , u.* 
FROM users u 
INNER JOIN votes 
ON u.id = v.user_id 
WHERE v.date_time > UNIX_TIMESTAMP(now() - INTERVAL 1 week) 
ORDER BY score DESC 
LIMIT 20; 

但我的查詢返回只有一行。

+0

見https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very -simple-sql-query – Strawberry

回答

0
Select sum(value) 
FROM users JOIN votes 
ON u.id = v.user_id 
WHERE v.date_time > UNIX_TIMESTAMP(now() - INTERVAL 1 week) 
GROUP BY name 
ORDER BY sum(value) DESC 
LIMIT 20; 
+0

你爲什麼不選擇'users'列? –

+0

它只是在sum(value),column1,column2之後添加的工作示例。或之前(價值)只是使SELECT *,sum(value)FROM ... – Bluesky

相關問題