如何使用mysql DB

时间:2018-01-04 12:49:23

标签: java mysql hibernate

我想从所有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工作台测试,我得到了这个结果:

enter image description here

如何编写查询以获得包含“BER”所有信息的单行?

非常感谢!

1 个答案:

答案 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'。另外一栏,'公司'告诉你哪个表包含每一行。