【发布时间】:2012-12-21 16:31:21
【问题描述】:
这是我的表结构:
persons
-------
id
first_name
last_name
phone_numbers
-------------
id
person_id
number
type
这是我的查询:
SELECT `persons`.`id`, `first_name`, `last_name`, `number`
FROM `persons`
LEFT JOIN `phone_numbers` ON `persons`.`id` = `phone_numbers`.`person_id`
ORDER BY `last_name` ASC
这会返回所有人,无论他们是否有电话号码。很好。
当一个人拥有多个电话号码时,问题就开始了;我为同一个人获得了多行。
我如何确保每人只能获得 1 行(带有第一个电话号码,或者根本没有 - 如果没有的话)?
更新:我忘了包括我有一个type 列的事实。它的值可以是以下三种选择之一:
- 细胞
- 工作
- 首页
首先将由该顺序确定。
【问题讨论】:
-
哪个是“第一个电话号码”?
-
@eggyal - 我怎么能忘记呢?我更新了我的问题。
-
@MegaHit
type是一个数字1,2,3还是描述Cell,Work,Home? -
@fthiella - 这不是一个数字(如果是,这会容易得多)。只是文字。