[英]SQL Return All Rows Where 2 Values Are Repeated
我确定这个问题已经回答了,但是我找不到它,或者答案太复杂了。 我是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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.