【发布时间】:2015-10-20 04:53:07
【问题描述】:
我有一个event 表
+----------+------------+
| event_id | event_name |
+----------+------------+
| 1 | event1 |
| 2 | event2 |
| 3 | event3 |
| 4 | event4 |
+----------+------------+
还有一个event_performer 表
+--------------------+----------+--------------+
| event_performer_id | event_id | performer_id |
+--------------------+----------+--------------+
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 2 | 1 |
| 4 | 2 | 2 |
| 5 | 3 | 3 |
| 6 | 3 | 4 |
| 7 | 4 | 3 |
| 8 | 4 | 4 |
+--------------------+----------+--------------+
我想获取执行者 ID 为 1 和 2 的所有事件,因此我运行以下查询:
select event.* from event
join event_performer
on event.event_id = event_performer.event_id
and performer_id in (1,2)
order by event_name
当我这样做时,我显然会得到重复的事件(两个用于 event_id 1,两个用于 event_id 2)。 MySQL 中删除重复项以便我获取每个事件记录一次的最有效方法是什么?
一个想法是使用select distinct event.* 处理大量字段和记录的效率如何?
请注意,示例表过于简单。每个表都有更多的字段和更多的记录。
【问题讨论】: