表A中有一个属性,它指示它将得到哪个表。
例如:
表A(资讯科技)
InfoID | Type 表B(学生)
StudentID | Name | Course |表C(雇员)
EmployeeID | Name | Company |如果输入=1,则在表B(学生)中获取信息
InfoID | StudentID | Name | Course在表C中获取其他信息(员工)
InfoID | EmployeeID| Name | Company发布于 2018-02-28 10:17:12
就像这样:
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 /在这样的情况下:
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.InfoIDhttps://stackoverflow.com/questions/49025753
复制相似问题