我正在尝试查找t1中但不在t2中的所有记录。我知道t1中的记录多于t2中的记录,因为当我运行时
select count(*)
from t1;
select count(*)
from t2;
我分别获得了21,500条记录和21,000条记录。但问题是这些表没有规范化,没有主键,因此我不能做这样的事情:
SELECT id FROM t1
where t1.id
not in (
SELECT t2.id
FROM t2
where t2.id is not null);
或者
SELECT t1.id, t2.id
FROM t1
LEFT JOIN t2
ON t1.id = t2.id
where t2.id is null
因为两者都返回null,因为id号完全匹配,所以似乎有相同数量的id。必须有另一个不匹配的字段。
更新
我最终这样做了:
select id, count(id)
from t1
group by id;
select id, count(id)
from t2
group by id
它给出了相同数量的索赔号和它显示的次数。我将其复制并粘贴到excel中,只是减去了另一个的一个计数,并进行了一个条件格式化,只显示那些不为零的格式,这给了我所有在一个表中出现的ID比另一个更多。 (邋solution的解决方案,但它能够解决问题)。
答案 0 :(得分:0)
你有两个问题。一个糟糕的数据库设计和某种虚假数据被插入到你的表中。
我不知道如果没有索引,这是否可行。
左外连接应该让你开始(查找语法)。
你应该得到类似的东西:
t1.id t2.id
1 1
2 2
3 null
4 4
答案 1 :(得分:0)
尝试通过使用MySQL在'id'上添加主键来修复表:
ALTER TABLE t1 ADD PRIMARY KEY (id)
ALTER TABLE t2 ADD PRIMARY KEY (id)