表A中有一个属性告诉它会获取哪个表。
<小时/>例如:
表 A(信息)
InfoID | Type
表 B(学生)
StudentID | Name | Course |
表 C(员工)
EmployeeID | Name | Company |
<小时/>
如果 type = 1,则获取表 B(学生)中的信息
InfoID | StudentID | Name | Course
否则获取表 C(员工)中的信息
InfoID | EmployeeID| Name | Company
最佳答案
类似的事情:
SELECT my_columns
FROM A
LEFT JOIN B ON A.InfoID = B.InfoID and A.type=1
LEFT JOIN C ON A.InfoID = C.InfoID and A.type <> 1
对于列,您可以像这样使用 CASE/WHEN :
SELECT A.InfoId,
MAX(CASE A.type = 1 THEN B.StudentID ELSE C.EmployeeID END) AS 'Employee/Student Id'
MAX(CASE A.type = 1 THEN B.Name ELSE C.Name END) AS 'Name'
MAX(CASE A.type = 1 THEN B.Course ELSE C.Company END) AS 'Company/Course'
FROM A
LEFT JOIN B ON A.InfoID = B.InfoID and A.type=1
LEFT JOIN C ON A.InfoID = C.InfoID and A.type <> 1
GROUP BY A.InfoID
关于mysql - 一张表与两张不同表的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49025753/