我有两个表,用户和事件,我想选择例如USERS 表中的 6 个用户,并按事件日期的时间顺序列出他们所有的事件
表格设计:
USERS EVENTS
user_id >>>> user_id
event_title
event_date
我是将所有事件选择到一个临时表中,然后使用“order by”查询,还是在查询本身中有更有效的方法来执行此操作?
最佳答案
这将从您的用户表中选择六个任意用户并获取他们的所有事件:
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 ...
检查正在使用的索引。
关于mysql - 查询设计,临时表? MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9679672/