【问题标题】:Comparison of two tables using sql使用sql比较两个表
【发布时间】:2017-07-27 02:32:03
【问题描述】:

我有两个表 - 表 A (id, a1) 和表 B (id, b1) 我正在加入 A.id=B.id 上的两个表,并且想要检查加入的记录,如果 a1 等于 b1。这是我使用过的查询,但不知何故它没有给我结果。 (PS:相同id的表A中存在重复记录)

select A.id, B.id, A.a1, B.b1
from tableA A join
     tableB B
     on A.id = B.id
where concat(A.id, a1) <> concat (B.id, b1)

请让我知道这是什么错误。可能有更简单的解决方案,但我不知道。

【问题讨论】:

  • 我删除了不兼容的数据库标签。仅标记您正在使用的数据库。

标签: sql


【解决方案1】:

鉴于ids 因join 而相同,这不是做同样的事情吗?

select A.id, B.id, A.a1, B.b1
from tableA A join
     tableB B
     on A.id = B.id
where a1 <> b1;

如果您使用的数据库中CONCAT()NULL 会忽略NULL 值,那么您可以使用:

select A.id, B.id, A.a1, B.b1
from tableA A join
     tableB B
     on A.id = B.id
where coalesce(a1, '') <> coalesce(b1, '')

【讨论】:

  • 如果 a1 为空,那么 a1 b1 为假,即使 b1 为空。
  • @Dr.Zim 。 . .在 MySQL 的这种情况下,concat() 也会返回 NULL。我想这是依赖于数据库的。
  • 甚至可能是not (a1 is null and b1 is null or a1 = b1)
  • 在 where 条件下,我将 where id 为 null 或 id = ' ' 或 concat (id, a1) concat (id, b1) ...猜猜这应该涵盖所有场景吧跨度>
  • @user3532090 。 . .这似乎涵盖了许多场景——尤其是如果空列不只包含空格。
猜你喜欢
  • 2018-02-25
  • 1970-01-01
  • 2012-08-01
  • 1970-01-01
  • 2011-10-03
  • 1970-01-01
  • 2018-10-20
  • 2017-11-01
  • 1970-01-01
相关资源
最近更新 更多