如何连接两个表并返回不匹配的行。在sqlite中

时间:2016-10-01 16:50:34

标签: android sqlite

我有两个表Table1和表2有3列id,名称和mac地址,在第二个表中我也有名为mac的列。

表1中我需要的东西我有10条记录,而表2中我只有5条记录,我想要表2中没有的记录。

如何在sqlite android中执行此操作?任何帮助,将不胜感激。提前谢谢......

感谢您抽出时间阅读本文

在表名中我添加了第二个类的名称

此查询适用于sql,我需要sqlite

SELECT T1.*
FROM T1
WHERE NOT EXISTS(SELECT NULL
                     FROM T2
                     WHERE T1.ID = T2.ID 
                         AND T1.Date = T2.Date
                         AND T1.Hour = T2.Hour)

3 个答案:

答案 0 :(得分:2)

这应该适用于SQLite,尽管效率不高。

如果ID做了它应该做的事情,那么检查T1.Date = T2.Date和T1.Hour = T2.Hour可能被遗漏。

使用JOIN的更好方式:

SELECT T1.*
FROM T1
LEFT JOIN T2 ON T1.ID = T2.ID
WHERE T2.ID IS NULL;

答案 1 :(得分:0)

您根据参考密钥(我假设为MAC)指定条件

Select T1.ID, T1.Name From Table1 T1 LEFT JOIN From Table2 T2 on T1.Mac=T2.Mac where T2.Mac is NULL.

SELECT id, name 
FROM Table2 
WHERE NOT EXISTS 
    (SELECT * 
     FROM Table2 
     WHERE Table1.Mac = Table2.Mac)

答案 2 :(得分:0)

SELECT *
  FROM T1
  WHERE T1.name NOT IN (SELECT name FROM T2 )

-------------------或者这样做是为了更多的限制---------------------- ----

SELECT *
  FROM T1
  WHERE T1.name NOT IN (SELECT name FROM T2 ) and
        T1.mac NOT IN  (SELECT mac FROM T2 )