按MySQL中

时间:2016-03-04 19:59:58

标签: mysql

我有两张桌子:

threads {
 `id` int(11) PRIMARY KEY
 `by` int(11)
 `forum` int(11)
 `title` text 
 `content` text
 `date_added` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP }

views {
 `thread_id` int(11)
 `forum_id` int(11)
 `user_id` int(11)
 `time_viewed` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP }

我的目标是使用这两个表按顺序选择视图最多的线程。

我尝试过研究,但我甚至无法解决如何在SQL中执行此操作的问题。

3 个答案:

答案 0 :(得分:2)

这样的事情可以解决问题:

SELECT t.id, count(v.thread_id) as count from threads t, views v where t.id=v.thread_id group by t.id order by count DESC;

答案 1 :(得分:1)

import getpass

password = getpass.getpass()
print(password)

如果您只想要具有比x更高的视图数的线程,那么您可以在最后添加以下内容

SELECT t.*,
       COUNT(v.thread_id)
FROM threads t
JOIN views v ON t.id = v.thread_id
GROUP BY v.thread_id
ORDER BY v.thread_id DESC

如果你需要TOP 10线程,那么你应该在最后添加它(而不是之前的规则)

HAVING COUNT(v.thread_id) >= x

答案 2 :(得分:0)

SELECT T.id, COUNT(TV.thread_id)
FROM threads T LEFT JOIN views TV ON T.id = TV.thread_id
ORDER BY COUNT(TV.thread_id) DESC
GROUP BY T.id

您可以在法规末尾添加一个LIMIT 10,以获得前10个最受欢迎的主题。