我有一个 SQL 问题,我正在努力解决这个问题。考虑这两个包含这些数据的表:
公司:
| id | name |
| 1 |Fake Company|
公司地址:
| id | company_id | name | address1 | address2 | town | postcode | main
| 1 | 1 | Head Office| Building 2 | RandStreet | London | L1 2FN | t
| 2 | 1 | MAIN | Building 14 | RandRoad | London | L1 6RR | f
我想检索一家公司及其主要地址。主地址由表main
中为真的列指示company_addresses
。但是,数据有些混乱,只是调用了一些地址MAIN
。有些公司根本没有任何地址!
那么,我如何检索一家公司及其地址,首先选择标记为的地址MAIN
,然后如果该地址不存在,则获取所调用的地址,MAIN
如果该地址不存在,则不返回任何内容?我现在只有:
SELECT * FROM companies c
JOIN company_addresses ca ON ca.company_id = c.id
WHERE c.name = 'Fake Company'
AND ca.main IS TRUE
但显然这只会带回将地址标记为主要地址的公司,而不是使用我想要的优先级列表。