我有两个表,用户和事件,我想选择例如来自USERS表的6个用户,并按事件日期的时间顺序列出他们的所有事件
表格设计:
USERS EVENTS
user_id >>>> user_id
event_title
event_date
我是否将所有事件选择到临时表中,然后使用“order by”查询,或者在查询本身中有更有效的方法吗?
答案 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 ...
检查正在使用的索引。