查询连接给我表示结果mysql php

时间:2017-05-10 12:18:07

标签: php mysql

我在mysql中有一个查询返回我重复的结果我想要结果unique.e.g在我的例子中我有公司名称它返回我重复的名字,id。

SELECT 
      company.name,
      company.id,
      branchInfo.name,
      branches.visible 
FROM branches  
INNER JOIN users branchInfo ON branches.branchId=branchInfo.id 
INNER JOIN users company ON branches.companyId=company.id   
WHERE branches.visible=1 

它返回多次重复数据,所以我希望它是唯一的。

2 个答案:

答案 0 :(得分:1)

您可以使用DISTINCTGROUP BY,它们不相同,但在您的示例中,您将获得相同的结果。

如果您只想删除重复项,请使用DISTINCT。如果要应用聚合运算符,请使用GROUPY BY:AVG,MAX,MIN,SUM和COUNT

试试这个:

SELECT 
  company.name,
  company.id,
  branchInfo.name,
  branches.visible 
FROM branches  
INNER JOIN users branchInfo ON branches.branchId=branchInfo.id 
INNER JOIN users company ON branches.companyId=company.id   
WHERE branches.visible=1 
GROUPY BY company.name

或者这个:

SELECT 
  DISTINCT(company.name),
  company.id,
  branchInfo.name,
  branches.visible 
FROM branches  
INNER JOIN users branchInfo ON branches.branchId=branchInfo.id 
INNER JOIN users company ON branches.companyId=company.id   
WHERE branches.visible=1;
  

分组依据:子句与SELECT语句协作使用,以将相同的数据排列到组中。这个GROUP BY子句   在SELECT语句中跟随WHERE子句并在ORDER之前   BY条款。

     

DISTINCT 关键字与SELECT语句结合使用,以消除所有重复记录并仅提取唯一   记录。

<强>更新

关于你关于加入的问题。

enter image description here

答案 1 :(得分:0)

您不需要多次加入user表。相反,你可以写如下:

SELECT 
      company.name,
      company.id,
      branchInfo.name,
      branches.visible 
FROM branches  
INNER JOIN users branchInfo ON branches.branchId=branchInfo.id AND branchInfo.id = branches.companyId    
WHERE branches.visible=1