比较两个表,其中一列匹配,另一列不匹配

时间:2014-08-21 17:48:54

标签: mysql

您好我正在尝试根据两列比较两个表。我要查看表之间用户名匹配的位置与电子邮件地址不匹配。

以下是我的尝试:

select * from ecy t1, users t2 where t1.username = t2.username and t1.email <> t2.email

当我运行此操作时,即使他们的电子邮件相同,我也会获得ecy表中的所有用户。

感谢。

2 个答案:

答案 0 :(得分:1)

我不会做两张表的笛卡尔积,并尝试用旧的Ansi方法过滤它。

SELECT u.username, u.email
FROM users u
JOIN ecy e on e.email <> u.email AND u.username = e.username

您也可以尝试使用已加入的子查询选择

SELECT username, email
FROM users u
JOIN( SELECT username, email FROM ecy) t on t.username = u.username and t.email <> u.email

DEMO

您希望使用JOIN语法将表连接在一起,而不是使用笛卡尔积。 JOIN语法还允许您在加入数据时过滤掉数据

答案 1 :(得分:0)

你可以尝试这个,我没有使用&lt;&gt;在mysql之前。

select * from ecy t1, users t2 where t1.username = t2.username and not t1.email = t2.email