MySQL - 按分组元素排序

时间:2014-01-22 17:13:04

标签: php mysql web

我有一个相当基本的搜索功能,允许用户使用各种连接搜索各个领域的公司。部分原因涉及公司地址,这是一对多的关系。其中一个地址标记为公司总部。查询可能如下所示:

SELECT comanies.*,customers.*
FROM _customers
NATURAL JOIN companies
NATURAL JOIN company_addresses 
WHERE company_addresses.city_id = '5556614'
GROUP BY company_id

如您所见,每家公司都必须在这个城市有一个地址才能匹配。但是,我也想订购那些以这个城市为总部的公司。目前,所有地址都分为一行,因此无法使用总部列。

如何使用总部位于cit_id = 5556614的公司首先出现?

2 个答案:

答案 0 :(得分:0)

尝试使用左连接而不是自然连接。理想情况下,结果应该是所有公司和客户,即company_address.city_id ='5556614'。因此除此之外你不应该获得任何其他数据。

答案 1 :(得分:0)

我想你想添加这个order by子句:

order by max(company_addresses.IsHeadquarters = 'Y') desc;

无论识别总部的逻辑是什么。

我建议你在max(company_addresses.IsHeadquarters = 'Y')条款中加入相同的表达式(select),以便识别总部位于城市的公司。