mysql(i):从多个表中选择数据?

时间:2012-01-21 18:16:10

标签: php mysql database

说我有2张桌子。第一个包含用户ID和他们的名字。第二个包含用户ID及其姓氏,但此表中的行可能存在也可能不存在,具体取决于用户是否已使用其姓氏。

我想同时选择名字和姓氏,但如果只存在名字,那么只需选择它。

我不能使用这样的东西,因为如果第二个表行不存在则会返回任何内容:

$db->query("select firstname.fname, lastname.lname from firstname, lastname where firstname.userid = lastname.userid");

感谢。

1 个答案:

答案 0 :(得分:2)

SELECT f.fname, l.lname
FROM firstname f
   LEFT JOIN lastname l
      ON f.userid = l.userid

这将返回类似:

fname | lname
John  | Doe
Bob   | NULL

其中NULL表示Bob没有姓氏

JOIN比您在示例中使用的笛卡尔积更高效,因为它不会产生{firstame,lastname}的所有可能组合,只会产生有意义的组合(具有相同用户ID的组合) )