我想从所有3个表中选择一行。这些表具有相同的结构,4列,“代码”,“机场名称”,“纬度”,“经度”。
我想写的查询是:
选择 finnairroute.code,finnairroute.airportname,finnairroute.latitude,finnairroute.longitude,lhroute.airportname,lhroute.latitude,lhroute.longitude,sasroute.code,sasroute.airportname,sasroute.latitude,sasroute.longitude 从frs.sasroute,frs.finnairroute,frs.lhroute在哪里 sasroute.code =“BER”或finnairroute.code =“BER”或lhroute.code = “BER”;
使用Mysql工作台测试,我得到了这个结果:
如何编写查询以获得包含“BER”所有信息的单行?
非常感谢!
答案 0 :(得分:0)
您可以尝试这样的事情:
SELECT finnairroute.*,lhroute.*,sasroute.* FROM DUAL
LEFT OUTER JOIN finnairroute ON (finnairroute.code='BER')
LEFT OUTER JOIN lhroute ON (lhroute.code='BER')
LEFT OUTER JOIN sasroute ON (sasroute.code='BER')
问题在于,即使代码不在表中,您也总是会获得一行。你需要测试finnairroute.code,lhroute.code和sasroute.code是否为null。
解决问题的另一种方法:
SELECT 'finnair' as company,code,airportname,latitude,longitude FROM finnairroute WHERE code='BER'
UNION SELECT 'lh' as company,code,airportname,latitude,longitude FROM lhroute WHERE code='BER'
UNION SELECT 'sas' as company,code,airportname,latitude,longitude FROM sasroute WHERE code='BER'
这将为您提供零到三行,具体取决于哪些表包含代码' BER'。另外一栏,'公司'告诉你哪个表包含每一行。