如何从两个mysql表中选择不匹配的行

时间:2013-12-25 15:03:02

标签: php mysql

我有两个表,tableA和tableB如下:

表A:

id | name       | age
---|------------|--------
1  | John       | 26
2  | Michal     | 30
3  | Watson     | 28
4  | samson     | 25

tableB的:

name     | occupation
---------|---------------
John     | job
Michal   | business
watson   | job

我希望以这样的方式匹配两个表,以便从tableA获得不匹配的行'name:samson'。我应该使用哪个查询(来自PHP脚本)?

3 个答案:

答案 0 :(得分:2)

尝试此操作,您可以使用NOT EXISTS查找不匹配的行

SELECT * FROM tableA
WHERE NOT EXISTS 
(SELECT * FROM tableB
WHERE tableA.`name` = tableB.`name`)

答案 1 :(得分:1)

在PHP中运行此查询。你会得到解决方案。

$qry = "SELECT a.* FROM tableA AS a, b.* FROM tableB AS b WHERE a.name <> b.name";

答案 2 :(得分:1)

您可以使用NOT IN子查询:

SELECT *
FROM   tableA
WHERE  name NOT IN (SELECT name FROM tableB)