我无法在定义不明确的表中确定可能的唯一键。该表有 5000 行。我在我认为可能是唯一键的字段上选择了不同的字段。
select count(distinct col1, col2)
from tab1;
结果是 4980 条记录。然后我检查了 20 条记录,发现 col2 的值为 null,但添加 col3 应该给我唯一性。
select count(distinct col1, col2, col3)
from tab1;
结果还是4980。什么的?所以我把查询改成了这个。
select col1, col2, col3, count(*)
from tab1
group by col1, col2, col3
having count(*) > 1;
有了这个,我得到了零行,所以 col1、col2 和 col3 是唯一的。那么前三列查询有什么问题呢?我试过这个。
select count(distinct col1, coalesce(col2, ''), col3)
from tab1;
这返回了 5000 条记录。
很可能多个字段在引擎中的一个字段中连接在一起,并且连接 col1、NULL、col3 会导致 NULL,这就是它以这种方式运行的原因。但是,结果似乎打破了 MySQL 似乎想要遵循的 NULL 标准。这是一个 MySQL 错误吗?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句