如何从 sql 查询中删除重复值
Posted
技术标签:
【中文标题】如何从 sql 查询中删除重复值【英文标题】:How to remove duplicate values from an sql query 【发布时间】:2016-11-06 15:58:25 【问题描述】:我想知道如何从 sql 查询的输出中删除重复值。
这是 sql 查询:
$query = "SELECT useraccount.Username, tariff.Name as tariffs,
energyconsumption.ElecEnergy, useraccount.Username as User
FROM useraccount
INNER JOIN tariff
ON useraccount.tariffs = tariff.id
INNER JOIN energyconsumption
ON energyconsumption.User = useraccount.id
WHERE Date = CURRENT_DATE";
这是该查询的输出:
"results":["Username":"absc868","TariffName":"s1","ElecConsump":"2000",
"Username":"absc868","TariffName":"s1","ElecConsump":"1900"]
如您所见,查询会过滤掉与今天日期匹配的数据。我们为同一用户提供 2 个输出。关税名称和用户名的值相同,但能耗值不同,这很好。
我想实现如下输出:
= "results":["Username":"absc868","TariffName":"s1","ElecConsump":"2000 +1900"
= "results":["Username":"absc868","TariffName":"s1","ElecConsump":"3900"
有人能指出我如何实现这一目标的方向吗?
提前感谢那些阅读帖子并做出贡献的人!
【问题讨论】:
您想对这些值求和还是希望它们为2000 +1900
?
@Dekel 嗨,是的,我想要值的总和
所以@scaisEdge 的答案就是你要找的。span>
@Dekel 谢谢你的评论是忠诚的..我赞成你的回答..(答案的意思几乎是一样的)
嗯,不完全一样,因为他想要一个总和(而不是一个字符串[像他的例子中那样])。你在这里也得到了我的投票:)
【参考方案1】:
你可以使用group_concat
函数:
$query = "SELECT useraccount.Username, tariff.Name as tariffs,
GROUP_CONCAT(energyconsumption.ElecEnergy SEPARATOR ' +')
FROM useraccount
INNER JOIN tariff
ON useraccount.tariffs = tariff.id
INNER JOIN energyconsumption
ON energyconsumption.User = useraccount.id
WHERE Date = CURRENT_DATE
GROUP BY useraccount.Username, tariff.Name";
【讨论】:
【参考方案2】:你应该使用 sum 和 group by
$query = "SELECT useraccount.Username as Username, tariff.Name as TariffName,
sum(energyconsumption.ElecEnergy) as ElecConsump
FROM useraccount
INNER JOIN tariff
ON useraccount.tariffs = tariff.id
INNER JOIN energyconsumption
ON energyconsumption.User = useraccount.id
WHERE Date = CURRENT_DATE
GROUP BY useraccount.Username, tariff.Name as tariffs";
(表列名别名和对象属性名有些区别)
【讨论】:
太棒了!非常感谢!我能问你最后一个问题吗?我测试了查询,我得到了一个错误。这是查询后的其余代码: $result = mysqli_query($conn,$query); $r = 数组(); if($result->num_rows) while($row = mysqli_fetch_array($result)) array_push($r, array( 'Username' => $row['Username'], 'TariffName' => $row['关税'], 'ElecConsump' => $row['ElecEnergy'] )); echo json_encode(array('results' => $r));错误在这一行: if($result->num_rows) @Mahbs 好吧,如果我的回答是正确的,请将其标记为已接受...看看这里如何meta.stackexchange.com/questions/5234/… @Dekel 可以。谢谢! @scaisEdge 完成。再次感谢您的帮助! @Mahbs 。如果您还有其他问题,请发布适当的新问题.. 所以所有 SO 用户都可以帮助您以上是关于如何从 sql 查询中删除重复值的主要内容,如果未能解决你的问题,请参考以下文章
如何更改我的 sql 查询,以便删除列中具有某些值的行 [重复]