所以我有一个问题;像这样的模拟FULL OUTER JOIN
:
SELECT * FROM SupplierInfo
LEFT JOIN MajorEquipment ON SupplierInfo.SupplierId = MajorEquipment.MEId
UNION
SELECT * FROM SupplierInfo
RIGHT JOIN MajorEquipment ON SupplierInfo.SupplierId = MajorEquipment.MEId;
然而,这会产生相当大的选择,我只需要2到3个字段:SupplierPartNo
和MajorEquipmentNo
。我尝试过这样的事情:
SELECT SupplierPartNo, MajorEquipmentNo FROM(
SELECT * FROM SupplierInfo
LEFT JOIN MajorEquipment ON SupplierInfo.SupplierId = MajorEquipment.MEId
UNION
SELECT * FROM SupplierInfo
RIGHT JOIN MajorEquipment ON SupplierInfo.SupplierId = MajorEquipment.MEId
);
但这给了我一个错误Every derived table must have its own alias: SELECT SupplierPartNo, MajorEquipmentNo FROM( SELECT....
如何从之前的选择中进行SELECT
?
答案 0 :(得分:1)
如果您想要数据集中的这两个特定字段,可以直接查询:
SELECT SupplierInfo.SupplierPartNo, MajorEquipment.MajorEquipmentNo
FROM SupplierInfo
LEFT JOIN MajorEquipment ON SupplierInfo.SupplierId = MajorEquipment.MEId
UNION
SELECT SupplierInfo.SupplierPartNo, MajorEquipment.MajorEquipmentNo
FROM SupplierInfo
RIGHT JOIN MajorEquipment ON SupplierInfo.SupplierId = MajorEquipment.MEId
如果您仍想使用派生表方法(我建议不要因为性能),那么您可以查询它:
SELECT a.SupplierPartNo, a.MajorEquipmentNo FROM (
SELECT * FROM SupplierInfo
LEFT JOIN MajorEquipment ON SupplierInfo.SupplierId = MajorEquipment.MEId
UNION
SELECT * FROM SupplierInfo
RIGHT JOIN MajorEquipment ON SupplierInfo.SupplierId = MajorEquipment.MEId
) a