SQL返回重复2个值的所有行

时间:2016-06-16 19:26:28

标签: mysql sql

我确信这个问题已经得到解答,但我无法找到它,或者答案太复杂了。我是SQL新手,我不确定如何一言不发。

我在设备上安装了mySQL数据库软件。我提取所有数据的查询包含更多字段和更多连接,但为了简洁起见,我只包含了一些。我需要添加另一个维度来创建一个报告,该报告列出了设备具有来自同一产品系列的多个软件安装的所有情况。

sample

现在我的代码有点像这样,它没有做我需要的。我在exists上看到了一些信息,但这些示例并没有考虑多个连接,所以语法让我感到厌烦。帮助

select
devices.name,
sw_inventory.product, 
products.family_name,
sw_inventory.ignore_usage,

from sw_inventory

inner join products
on sw_inventory.product=products.product_name

inner join devices
on sw_inventory.device_name=devices.name

where sw_inventory.ignore=0

group by devices.name, products.family_name

1 个答案:

答案 0 :(得分:1)

关于这个主题有很多答案,但我绝对明白并不总是知道术语。您正在寻找如何查找重复值。

基本上这是一个两步过程。 1找到重复项2,如果你想要那些,则与原始记录相关。注意第二部分是可选的。

所以要从字面上找到你提供的查询的所有重复

HAVING COUNT(*) > 1语句后添加group by。如果您想知道有多少重复项添加一个计算列来计算它们。

select
devices.name,
sw_inventory.product, 
products.family_name,
sw_inventory.ignore_usage,
NumberOfDuplicates = COUNT(*)
from sw_inventory

inner join products
on sw_inventory.product=products.product_name

inner join devices
on sw_inventory.device_name=devices.name

where sw_inventory.ignore=0

group by devices.name, products.family_name

HAVING COUNT(*) > 1