mysql - 查询设计,临时表? MySQL

标签 mysql sql

我有两个表,用户和事件,我想选择例如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/

相关文章:

mysql - SQL 更新 - 出现错误

PHP 文件不从我的 mySQL 数据库服务器检索数据

sql - 从表中的不同条件中选择 COUNT

sql - Oracle PL/SQL 字符串比较问题

sql - 在检查另一个表中的最小和最大 id 后,我需要从表中找到丢失的 id

php - 我在加载页面时突然遇到 PHP 和 MySQL 错误

php-mysql 回车

mysql 7列pk与1列md5唯一约束

php - 如何防止 PHP 中的 SQL 注入(inject)?

mysql - 当第三个表中可能不存在值时从 3 个表中进行选择