为什么我的查询不能用Mysql返回准确的结果

为什么我的查询不能用Mysql返回准确的结果,mysql,Mysql,我正在使用下面的查询从表中获取重复记录。它可以很好地满足上述要求 select tc_vessel_name, count(tc_vessel_name)as Vessel_Name from t_vessel_m as v group by tc_vessel_name having Vessel_Name >1 但真正的问题是,当我使用下面的查询在另一个表中查找具有相同id项的重复结果时,它会返回空结果。我无法理解这背后的真正原因。请帮助我 SELECT tc_vessel_id

我正在使用下面的查询从表中获取重复记录。它可以很好地满足上述要求

select tc_vessel_name, 
count(tc_vessel_name)as Vessel_Name from t_vessel_m as v
group by tc_vessel_name
having Vessel_Name >1
但真正的问题是,当我使用下面的查询在另一个表中查找具有相同id项的重复结果时,它会返回空结果。我无法理解这背后的真正原因。请帮助我

SELECT  tc_vessel_id,tc_vessel_name, COUNT(tc_vessel_name) AS Vesse_Name
FROM    t_vessel_m
WHERE   tc_vessel_id IN (SELECT tc_vessel_id FROM t_vessel_x) AND 
t_vessel_m.tc_is_deleted='F'
GROUP BY tc_vessel_name
HAVING ( COUNT(tc_vessel_name) > 1 )

在第一个查询中未正确找到重复项。这:

select tc_vessel_name, 
count(tc_vessel_name)as Vessel_Name from t_vessel_m as v
group by tc_vessel_name
having Vessel_Name > 1
应该是这样的:

select tc_vessel_name, 
count(tc_vessel_name)as Vessel_Name from t_vessel_m as v
group by tc_vessel_name
having count(Vessel_Name) > 1

您真正做的不是比较组数,而是将分组值与1进行比较。所以第一个和第二个陈述是不同的。看这把小提琴,没有重复,但结果是你得到了两行。在
sqlserver
中,它会给您一个强制转换异常,但它会在
MySql

中将1隐式转换为varchar,这会产生什么结果<代码>从t_Vesser_x中选择tc_Vesser_id实际上我有两个表具有公共字段tc_Vesser_id。因此,我试图找到具有相似名称的记录计数大于1,并且相同id存在于另一个表中,方法是使用in-operatorI创建了两个表,并创建了重复的(id和名称)记录。它返回时有一行显示了副本。您的数据中是否存在意外情况?没有什么意外情况,因为我们使用的是此处id,当我尝试使用上述查询进行搜索时,它返回结果,当我手动在另一个表中查找该id时,它存在于该表中,但第二个查询未显示该记录以复制您的问题,我建议您为这两个表创建一个或发布您的结构,其中包含2-3条不起作用的相关记录。由于我的结构和记录正常工作,要么我误解了你的结构,要么你的结构有问题,需要复制。查询写得很好。然后您可能正在使用
t\u vessel\u m过滤重复项。tc\u is\u deleted='F'
我也尝试删除这些字段,但仍然存在一个问题,这就是为什么我要尝试找出这背后的实际问题。我有大量数据,当我不在查询中使用IN或NOT IN时,它是返回419个结果,但在使用IN运算符后,它返回的是空结果,但当我尝试手动搜索另一个表中的一条记录时,它存在