我确信这个问题已经得到解答,但我找不到它或者答案太复杂。我是 SQL 新手,不知道如何概括地表达这一点。
我在设备上安装了软件的 mySQL 数据库。我提取所有数据的查询有更多字段和更多连接,但为了简洁起见,我只包含了一些。我需要添加另一个维度来创建一份报告,列出设备安装多个同一产品系列软件的每种情况。
现在我有类似这样的代码,但它没有做我需要的事情。我已经看到了一些关于 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 找到重复项 2 如果需要,将其与原始记录关联起来。请注意,第二部分是可选的。
因此,要从字面上查找您提供的查询的所有重复项
在group by
语句后添加HAVING COUNT(*) > 1
。如果您想知道有多少重复项,请添加计算列来对它们进行计数。
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
关于mysql - SQL 返回 2 个值重复的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37867817/