2012-03-13 72 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 ...來檢查正在使用哪些索引。