我有两个表,如下所示。我需要比较两个表,并且需要在mysql中获得不匹配的列名吗?
USERS
+----+------------+
| id | login_name |
+----+------------+
| 1 | Chris |
+----+------------+
| 2 | Cherri |
+----+------------+
USERS_TEMP
+----+------------+
| id | login_name |
+----+------------+
| 1 | Chris1 |
+----+------------+
| 2 | Cherri |
+----+------------+
所以在我的情况下,我的预期输出是想从USERS_TEMP
表返回login_name。我该怎么做?
答案 0 :(得分:1)
如果您只想要不匹配的名称:
select u.id, u.login_name, ut.login_name
from users u join
users_temp ut
on u.id = ut.id and u.login_name <> ut.login_name;
注意:这只会查找其ID匹配的用户,这与您的问题的措辞一致。
答案 1 :(得分:1)
尝试此查询
SELECT * FROM USERS_TEMP WHERE Not EXISTS (SELECT * FROM USERS);
答案 2 :(得分:0)
使用UNION
SELECT USERS.id, USERS.login_name
FROM USERS
UNION ALL
SELECT USERS_TEMP.id, USERS_TEMP.login_name
FROM USERS_TEMP