加入2个表,显示一列,按同一列分组

时间:2016-05-22 14:09:23

标签: mysql

我有两张桌子:

  1. [CompanyGroups](id,id_company,id_group)

  2. [CompanyRegions](id,id_company,id_region)

  3. 我想只选择id_company where((...)中的id_group或(..)中的id_region)

    Select g.id_company, r.id_company
    from CompanyGroups g, CompanyRegions r
    where (g.id_group in (...) or r.id_region in (...)) group by id_company
    

    结果分为两列:g.id_company有一些id,r.id_company有其他id。

    如何只在一列中对它们进行格式化?

2 个答案:

答案 0 :(得分:0)

我很久以前就学会了数据库概念。所以我试着回忆起那些概念,并回答你对你的问题的回忆。

您正在加入两个表而未指定它们之间的任何连接关系。然后从每个表中选择字段,因此MySQL将通过将CompanyGroups中的每条记录映射到CompanyRegions的每条记录来加入这两个表。

要解决您的问题,请改用UNION

SELECT id_company
FROM CompanyGroups 
WHERE id_group in (...)

UNION

SELECT id_company 
FROM CompanyRegions
WHERE id_region in (...)

答案 1 :(得分:0)

sagi的回答可能会导致重复,所以我会扩展答案:

SELECT DISTINCT a.id_company 
FROM (
SELECT g.id_company FROM CompanyGroup g
WHERE g.id_group in(...)
UNION
SELECT r.id_company FROM CompanyRegions r
WHERE r.id_region in(...) 
) a