查询设计,临时表? MySQL的

时间:2012-03-13 07:06:57

标签: mysql sql

我有两个表,用户和事件,我想选择例如来自USERS表的6个用户,并按事件日期的时间顺序列出他们的所有事件

表格设计:

USERS               EVENTS
user_id    >>>>     user_id
                    event_title
                    event_date

我是否将所有事件选择到临时表中,然后使用“order by”查询,或者在查询本身中有更有效的方法吗?

1 个答案:

答案 0 :(得分:1)

这将从您的users表中选择六个任意用户并获取他们的所有事件:

SELECT user_id, event_title, event_date
FROM EVENTS
WHERE user_id IN
(
    SELECT user_id
    FROM USERS
    LIMIT 6
)
ORDER BY event_date

您应该更改子选择以根据您所需的条件选择六个特定用户,而不仅仅是MySQL找到的前六个用户。

您应该添加索引以确保其有效运行。使用EXPLAIN SELECT ...检查正在使用的索引。