我有两张桌子:
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中执行此操作的问题。
答案 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个最受欢迎的主题。