我有两张桌子:
[CompanyGroups](id,id_company,id_group)
[CompanyRegions](id,id_company,id_region)
我想只选择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。
如何只在一列中对它们进行格式化?
答案 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