mysql - 如何连接两个表但只返回与特定列不匹配的行,其中也包含 NULL?

标签 mysql compare match

我有两个表,如下所示:

T1:  ID  |  oldID

T2:  ID  |  newID

我基本上需要在 ID 匹配时加入这些表。但是,我只想返回如下结果:ID |旧ID | newID 其中 oldID 不等于 newID。

示例数据:

T1:1 | 100 2 |无效的 3 | 200 4 | 500

T2:1 |无效的 2 | 300 3 | 200 4 | 400

我的预期结果:

T3:1 | 100 |无效的 2 |空 | 300 4 | 500 | 400

谁能指出我正确的方向?

最佳答案

试试这个答案,希望这有帮助

CREATE TABLE #T1 (ID INT, oldID INT)
INSERT INTO #T1 VALUES(1,100)
INSERT INTO #T1 VALUES(2,NULL)
INSERT INTO #T1 VALUES(3,200)
INSERT INTO #T1 VALUES(4,500)

CREATE TABLE #T2 (ID INT, [NewId] INT)
INSERT INTO #T2 VALUES(1,NULL)
INSERT INTO #T2 VALUES(2,300)
INSERT INTO #T2 VALUES(3,200)
INSERT INTO #T2 VALUES(4,400)

select T1.ID,T1.oldID,T2.[NewId] 
FROM #T1 T1, #T2 T2 
WHERE T1.id=T2.id and ISNULL(T1.oldID,0) != ISNULL(T2.[NewId],0)

DROP TABLE #T1
DROP TABLE #T2  

关于mysql - 如何连接两个表但只返回与特定列不匹配的行,其中也包含 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47324213/

相关文章:

php - 在 MySQL 非空字段上创建 DateTime 对象

如果另一个数据帧值小于 0,则替换 R 数据帧中的值

java - 比较两个加密密码的情况

javascript - 正则表达式问题 - 尝试将一般数字转换为货币

MySQL Match Against 在 2 台服务器上给出 2 个不同的结果

mysql - 带有内存数据库的 Rails

java - Hibernate、MySQL、Enum 和 NULL

当不从服务器删除电子邮件时,PHP 电子邮件到 mysql 数据库问题

c++ - 使用 DRY 原则重构逻辑

arrays - 匹配三个排序列表的算法