我正在使用下面的SELECT语句将属性表与epc表联接在一起。 EPC并非总是可用于物业。如果该属性不存在,我还希望使用epc表。
SELECT p.dateAdded, p.paon, p.saon, p.street, p.locality, p.townCity, p.district, p.county, p.propertyType,
p.propertyType, p.oldNew, p.postcode, p.tenure, p.ppd, p.bedrooms, p.bathrooms, p.receptions, p.lastSalePrice, p.lastTransferDate,
e.INSPECTION_DATE, e.TOTAL_FLOOR_AREA, e.CURRENT_ENERGY_RATING, e.POTENTIAL_ENERGY_RATING, e.CURRENT_ENERGY_EFFICIENCY, e.POTENTIAL_ENERGY_EFFICIENCY,
e.PROPERTY_TYPE
FROM property p
LEFT JOIN epc e ON p.postcode = e.POSTCODE AND CONCAT(p.paon, ', ', p.street) = e.ADDRESS1
WHERE p.paon = 8 AND p.postcode = "TS6 9LN"
ORDER BY e.INSPECTION_DATE, p.lastTransferDate DESC
LIMIT 1
是否可以选择两个表,但是如果不存在1个表,则选择同时存在的1个表?
答案 0 :(得分:0)
您需要一个FULL OUTER JOIN
。不幸的是,MySQL没有实现SQL标准的这一部分。您可以用两个外部联接来模拟一个完整的外部联接,但是它会很长,并且可能非常麻烦且容易出错。
例如:
select a.col1, b.col2
from table_a a
LEFT join table_b b on ...
union -- here we union both outer joins
select a.col1, b.col2
from table_a a
RIGHT join table_b b on ...
在第二个SELECT
中,表角色被反转,因为它使用RIGHT JOIN
而不是LEFT JOIN
。