SQL查找某一字段相同,某一字段不同的数据

昨天,在整理客户资料的时候,我发现了一个小问题。
我在公司办公室里用了 5 年的计算机上打开一个 Access 数据库,并创建一个名为 user 的新表。
该表只有两列,一列用于名称,一列用于类。
我随机插入一些数据并故意重复它。
比如张三出现在一年一班、一年一班、一年二班。
王五也是如此,同名不同班。

过了一会儿,我单击 SQL 视图并输入“select from user where name in (select name from user group by name getting count(name) > 1 )”。
旧电脑屏幕闪烁,张三和王五全部出现。
果然,都是重复的。
计数正确:张三出现了三次,王五出现了两次。

我尝试运行语句再次删除数据:“从具有名称的用户中删除(从具有计数(名称)> 1 的名称的用户组中选择名称)”。
当我单击“运行”时,我收到一条消息,指出 Access 已删除了 5 条记录。
我赶紧再次查看“用户选择”,发现张三和王五不见了。
高一班的张三坤、高一二班的张三坤、王五都不见了。

等等,我突然想到,如果我只想保存第一条记录怎么办?您可能需要使用“从 id 不存在的用户中删除(从名称为 count(name) > 1 的用户组中选择 min(id)”)添加 id 字段。
不过,该表目前没有 ID,因此暂时忽略它。

然后尝试“选择与用户不同的名称”。
结果,就只有张三、李四、王五三个人出现了,而且每个名字都只出现了一次。
但你要知道,张三只有一个,王五也只有一个。
这和现在删除有什么区别? Different 似乎将所有重复项压缩到一行中。

再次使用“从用户中选择单个类别”。
结果,只剩下第1 类、第1 类、第2 类和第3 类。
所有重复课程均参加。
这非常有用。
例如,如果您想查看不同班级中有多少人,请先删除班级。

最后,让我们尝试“从用户中选择个人姓名和类别”。
每个名称和类别组合在结果中仅出现一次。
例如,张三的高中一年级(1 )只算作一项,张三的高中一年级(2 )则算作单独的一项。
通过这种方式,您可以消除两个字段之间的重复。

现在的问题是,如果名字和类重叠,但我想保留类中每个名字的第一条记录怎么办?比如张三高一一年级就参加过两次,第一次就想录下来。

sql中查询表中特定重复数据的函数

哎呀,报告如何在 SQL 查询中查找重复数据。
为此,您需要使用几个键:NUMBER 函数、CLASS 子句和 HAVING 子句。
来来来,我给大家详细解释一下。

谈论伯爵的第一个职能。
这个的作用是统计你的列中有多少个重复值。
例如,如果您想统计“纽约”这个城市在顾客表中出现的次数,则必须编写如下内容: SELECT COUNT(city) FROM store WHERE city = "New York";你看,数据库告诉你找到客户表的城市列,然后只计算那些等于“纽约”的。

来到 GROUP BY 子句。
该对象的作用是向某一列插入数据。
例如,如果你想知道每个城市有多少个客户,你应该这样写: SELECT city, NUMBER () WHERE customer_counts fromcustomers groups city;此时数据库会按城市列出所有客户,并统计每个城市有多少个客户。

最后还有一个 HAVE 子句,它有点像 WHERE 子句,但仅在连接之后起作用。
如果你想过滤超过5 00个客户的城市,你必须这样写: SELECT city, COUNT() AS customer_count FROMcustomers GROUP BY city HAVING customer_count> 5 00;现在第一个国家数据库将按城市划分,然后只有这些城市才会统计超过 5 00 个客户。

如果要查找完全重复的行,则必须将所有列写入 BY 圈中,然后在having 子句中写入 COUNT()> 1 例如,如果你想在订单表中查找有重复连接order_id和product_id的订单,你必须这样写: SELECT order_id,product_id,COUNT() ASduplicate_count FROM order GROUP BY order_id,product_id COUNT() > 1 ;现在,数据库将查找具有重复的 order_id 和 Product_id 组合的行。

关键是计算用于计数,GROUP BY用于关联,GROUP BY用于过滤。
这样就可以高效地查找表中的重复数据。