Mysql Query获取不在表2中的结果

时间:2013-12-10 09:59:01

标签: mysql

我有两张表,比如

Table 1
-------------
id, name1
-------------
1, abc
2, xyz
3, hello
4, world


TABLE 2
--------------------------
id, table1_id, name2
--------------------------
1, 3, foo
2, 2, bar

需要mysqlQuery(但不是子查询):

SELECT table1.* FROM table1 WHERE table1.id NOT IN (SELECT table2.id FROM table2);

结果如:

TABLE 1
-------------
id, name1
-------------
1, abc
4, world

你可以帮助我在没有子查询的情况下获得上述结果。

3 个答案:

答案 0 :(得分:2)

使用LEFT JOIN和WHERE子句与IS NULL一起过滤不匹配的记录,

SELECT a.* 
FROM table1 a
LEFT JOIN table2 b ON a.id = b.table1_id
WHERE b.table1_id IS NULL

答案 1 :(得分:0)

SELECT table1.* 
FROM table1 a
LEFT JOIN table2 b ON a.id = b.id
WHERE a.id != b.id

我希望这就是你要找的东西。

答案 2 :(得分:0)

试试这个:

  select * from tab1 order by id asc limit 1;
  UNION
  select * from tab1 order by id desc  limit 1;