复杂的SQL查询... 3个表并且需要使用时间戳在过去24小时内最受欢迎

时间:2010-04-26 14:57:10

标签: php sql mysql database

我有3个表,每个表中有一列与每行一个ID相关。我正在寻找一个sql语句查询,它将检查过去24小时(86400秒)中所有行的所有3个表我已经在列time下的每个表中存储了时间戳。

在我得到这个查询后,我将能够进行下一步,然后检查有多少ID重复出现,这样我就可以按照阵列中最受欢迎的方式进行排序,并将其限制在前5位。 ..

欢迎任何想法! :)

提前致谢。

的Stefan

1 个答案:

答案 0 :(得分:10)

SELECT  id, COUNT(*) AS cnt
FROM    (
        SELECT  id
        FROM    table1
        WHERE   time >= NOW() - INTERVAL 1 DAY
        UNION ALL
        SELECT  id
        FROM    table2
        WHERE   time >= NOW() - INTERVAL 1 DAY
        UNION ALL
        SELECT  id
        FROM    table3
        WHERE   time >= NOW() - INTERVAL 1 DAY
        ) q
GROUP BY
        id
ORDER BY
        cnt DESC
LIMIT 5