说我有2张桌子。第一个包含用户ID和他们的名字。第二个包含用户ID及其姓氏,但此表中的行可能存在也可能不存在,具体取决于用户是否已使用其姓氏。
我想同时选择名字和姓氏,但如果只存在名字,那么只需选择它。
我不能使用这样的东西,因为如果第二个表行不存在则会返回任何内容:
$db->query("select firstname.fname, lastname.lname from firstname, lastname where firstname.userid = lastname.userid");
感谢。
答案 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的组合) )