Mysql 选择所有数据包括另一个表,即使为空
设置: (1) Employee表(employeeID、firstName、lastName) (1) 鞋台(鞋垫、员工ID、鞋垫名称、鞋垫颜色、鞋垫) 我想选择Employee表中的所有行,即使shoe表中没有匹配的EmployeeID(Employee_EmployeeID),也会显示整行。所需输出示例:Mysql 选择所有数据包括另一个表,即使为空,mysql,sql,Mysql,Sql,设置: (1) Employee表(employeeID、firstName、lastName) (1) 鞋台(鞋垫、员工ID、鞋垫名称、鞋垫颜色、鞋垫) 我想选择Employee表中的所有行,即使shoe表中没有匹配的EmployeeID(Employee_EmployeeID),也会显示整行。所需输出示例: EmployeeID | firstName | lastName | shoeName | shoeColor | shoeBrand 1
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没问题,当您有代表时,您可以随时回来投票。:)