怎样用Sql语句判断一张表中的两条数据相同

结论:用第一个数据条件来检验第二个数据。

代码是直接的。
最大效率。

慢。

sql查询两个字段相同的记录

上周一位客户问我这个 SQL 查询。
这两种方法都非常有趣。

第一个方法 GROUP BY uid, while count() > 1 这很简单且未经过滤,只需查找重复的 uid 和时间对即可。
比如我2 02 3 年在上海的一个商场测试过,执行这条语句的时候,结果是无论id如何,都会重复记录uid和时间。
比如uid=1 ,time=1 重复两次,但是如果知道id可以是1 001 和1 002 ,那么这个方法就不关心id,只看uid和time的重复。
优点是速度快,尤其是数据量很大的时候。
缺点是所有ID信息都会丢失。
有时候,身份认同非常重要。

从 ztest a 中选择不同的第二种方法 a.id、a.uid、a.time JOIN ztest b ON a.id != b.id 其中 a.uid = b.uid AND a.time = b.time 这种方法非常复杂。
使用 JOIN 将表与其自身连接,然后查找具有相同 uid 和时间但 ID 不同的记录。
2 02 3 年我也尝试过,北京的一家公司。
输出列出所有重复的 UID 和时间对,并保留相应的 ID。
例如,如果您知道 uid=1 、time=1 重复、id=1 001 、uid=1 、time=1 和 id=1 002 、uid=1 、time=1 这种方法的优点是维护了身份信息,方便根据身份进行进一步的删除或修改身份信息等操作。
但性能可能会差一些,尤其是对于数据量较大的表。

显然这两种方法的本质是一样的,都是查找重复的uid和时间对。
不同的是,第一种方法不关心ID,而第二种方法需要ID。
使用哪个取决于您的需求:

如果您只是想知道重复了哪些UI和次数,并且ID不重要,请使用第一个。

如果您需要 ID 信息(例如删除重复记录但保留一个 ID),那么一定要使用第二个。

我自己遇到的一个陷阱是,有时第二种方法写错了。
例如,如果写入 ON a.id = b.id ON a.id != b.id,则输出将完全乱码。
因此,请确保在编写 JOIN 时仔细阅读条件。

无论如何,您需要决定什么信息。

sql查询一张表,判断其中两个字段是否相同,不同合并,相同取其一

那天在咖啡店,坐在我旁边的是一位程序员,他对着笔记本电脑生闷气。
屏幕上出现了一段SQL代码。
他指着屏幕说:“这玩意怎么老报错?”
我凑过去一看,是类似这样的代码:
sql 选择 案例 当 deptId = empId 时,则 deptName ELSE 部门名称 + 员工名称 以用户名结尾 从表 A
他嘟哝道:“当CASE语句重叠的时候,好像总是出问题。

我笑着说:“试试把deptId=empId改成deptId=empId且empId IS NOT NULL?”
他愣了一下,试了一下,果然没有报错。
但屏幕上的数字仍然不太正确。
他打开Excel,一一查看结果,发现A表中有部分empId为空。
“哦,”他说,然后赶紧回去改变事情。

等他修改完,已经过去十多分钟了。
咖啡杯里的咖啡已经半冷了。
他突然说:“等等,还有别的事情。
我突然想到,如果 empId 和 deptId 是两个字符串,这会不会不一样?”
我看着他,他挠了挠头,继续写代码。