我在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
它返回多次重复数据,所以我希望它是唯一的。
答案 0 :(得分:1)
您可以使用DISTINCT或GROUP 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语句结合使用,以消除所有重复记录并仅提取唯一 记录。
<强>更新强>
关于你关于加入的问题。
答案 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