2012-03-13 36 views
1

我有两个表格,用户和事件,我想选择例如从事件日期的时间顺序USERS表并列出所有他们对事件的6个用户查询设计,临时表? MySQL

表设计:

USERS    EVENTS 
user_id >>>>  user_id 
        event_title 
        event_date 

我是否选择所有的事件到一个临时表,然后查询以“为了通过“还是有一种更有效的方式在查询本身内完成此操作?

回答

1

这将从用户表中挑选6个任意用户,并获取他们的所有事件:

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 ...来检查正在使用哪些索引。