Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 选择所有数据包括另一个表,即使为空_Mysql_Sql - Fatal编程技术网

Mysql 选择所有数据包括另一个表,即使为空

Mysql 选择所有数据包括另一个表,即使为空,mysql,sql,Mysql,Sql,设置: (1) Employee表(employeeID、firstName、lastName) (1) 鞋台(鞋垫、员工ID、鞋垫名称、鞋垫颜色、鞋垫) 我想选择Employee表中的所有行,即使shoe表中没有匹配的EmployeeID(Employee_EmployeeID),也会显示整行。所需输出示例: EmployeeID | firstName | lastName | shoeName | shoeColor | shoeBrand 1

设置: (1) Employee表(employeeID、firstName、lastName)

(1) 鞋台(鞋垫、员工ID、鞋垫名称、鞋垫颜色、鞋垫)

我想选择Employee表中的所有行,即使shoe表中没有匹配的EmployeeID(Employee_EmployeeID),也会显示整行。所需输出示例:

 EmployeeID  | firstName    | lastName    | shoeName     |   shoeColor  | shoeBrand

 1            John           Smith         AirMax2          Red          Nike
 2            Ronald         Mcdonald      null             null         null
 3            James          Knight        null             null         null
 4            Cindy          Smith         Pump             Brown        Cole Haan

我已经尝试了很多不同的联接,我将为每个员工获得重复的行。

您需要一个
左外部联接

select e.employeeid, e.firstname, e.lastname, s.shorname, s.shoecolor, s.shoebrand
from employee e left outer join
     shoe s
     on e.employeeid = s.employeeid

您将要使用
左联接

select e.employeeId,
  e.firstName,
  e.lastName,
  s.ShoeName,
  s.ShoeColor,
  s.ShoeBrand
from Employee e
left join shoe s
  on e.employeeID = s.Employee_employeeID

LEFT JOIN
将从
employee
表返回匹配行,即使
shoe
表中没有匹配行

如果您需要学习
JOIN
语法的帮助,这里有一个很好的方法

现在,如果希望所有行都与两个表匹配,那么可以使用
内部联接

   SELECT e.employeeId,e.firstName,e.lastName,s.ShoeName,s.ShoeColor,s.ShoeBrand 
   FROM    Employee e
   LEFT JOIN Shoe s
   ON e.employeeID = s.Employee_employeeID

我认为这正是
左外连接所做的……我是否遗漏了什么?每个员工是否有不止一只鞋,但您希望数据库引擎任意选择一只鞋返回?Matchu如是说。另外,展示一些你尝试过的问题,这样我们就可以告诉你你做错了什么:)是的,你们都是对的。我想我已经阅读并理解了左撇子的意思。。显然不是。谢谢你的回复,这是正确的。。将其标记为答案,因为它被投票支持。谢谢很高兴它帮助了你,欢迎你!祝其他人好运!如果我有一个
,其中x=?
?@Marcel很老了,你可能已经知道了,但为了完整起见还是想添加它,我该怎么做呢。例如,您可以在echo_Me的查询末尾附加
WHERE e.lastName=“radi”
,在他的SQLFIDLE中进行测试。@Jordan没问题,当您有代表时,您可以随时回来投票。:)