sqlite查询以选择没有历史记录的新项目

sqlite查询以选择没有历史记录的新项目,sql,database,sqlite,networking,Sql,Database,Sqlite,Networking,我有一个addrwatch数据库,其数据库类似于: 1381347053|eth0|0|20:XX:XX:XX:XX:a9|192.168.1.108|0 1381347056|eth0|0|00:XX:XX:XX:XX:02|192.168.1.138|0 1381347066|eth0|0|f4:XX:XX:XX:XX:39|192.168.1.152|0 1381347093|eth0|0|00:XX:XX:XX:XX:27|192.168.1.157|0 1381347112|eth0|

我有一个addrwatch数据库,其数据库类似于:

1381347053|eth0|0|20:XX:XX:XX:XX:a9|192.168.1.108|0
1381347056|eth0|0|00:XX:XX:XX:XX:02|192.168.1.138|0
1381347066|eth0|0|f4:XX:XX:XX:XX:39|192.168.1.152|0
1381347093|eth0|0|00:XX:XX:XX:XX:27|192.168.1.157|0
1381347112|eth0|0|00:XX:XX:XX:XX:20|192.168.1.104|0
1381347132|eth0|0|00:XX:XX:XX:XX:cc|192.168.1.107|0
1381347142|eth0|0|00:XX:XX:XX:XX:0b|192.168.1.5|0
我想退回以下所有项目:

在过去24小时内可以看到mac地址 mac地址在24小时前还没有出现 由于addrwatch会为mac地址的每个活动输入条目,因此仅搜索过去24小时将返回所有活动的网络设备。我只想列出在过去24小时内引入网络的设备。

尝试以下操作:

SELECT mac
  FROM Table1
 WHERE mac IN(
              SELECT DISTINCT mac 
                FROM Table1
               WHERE date(time, 'unixepoch') = date('now')
             )
   AND mac NOT IN (
                   SELECT DISTINCT mac
                     FROM Table1
                    WHERE date(time, 'unixepoch') <= date('now', '-1 day')
                  )
在SqlFiddle上。

尝试以下操作:

SELECT mac
  FROM Table1
 WHERE mac IN(
              SELECT DISTINCT mac 
                FROM Table1
               WHERE date(time, 'unixepoch') = date('now')
             )
   AND mac NOT IN (
                   SELECT DISTINCT mac
                     FROM Table1
                    WHERE date(time, 'unixepoch') <= date('now', '-1 day')
                  )
在SqlFiddle上。

尝试以下操作:

SELECT mac
  FROM Table1
 WHERE mac IN(
              SELECT DISTINCT mac 
                FROM Table1
               WHERE date(time, 'unixepoch') = date('now')
             )
   AND mac NOT IN (
                   SELECT DISTINCT mac
                     FROM Table1
                    WHERE date(time, 'unixepoch') <= date('now', '-1 day')
                  )
在SqlFiddle上。

尝试以下操作:

SELECT mac
  FROM Table1
 WHERE mac IN(
              SELECT DISTINCT mac 
                FROM Table1
               WHERE date(time, 'unixepoch') = date('now')
             )
   AND mac NOT IN (
                   SELECT DISTINCT mac
                     FROM Table1
                    WHERE date(time, 'unixepoch') <= date('now', '-1 day')
                  )
在SQLFIDLE上。

此查询将执行以下操作:

SELECT DISTINCT mac FROM t WHERE mac NOT IN (
    SELECT mac FROM t WHERE time < CAST(STRFTIME('%s', 'NOW', '-1 DAY') AS INTEGER)
);
此查询将执行以下操作:

SELECT DISTINCT mac FROM t WHERE mac NOT IN (
    SELECT mac FROM t WHERE time < CAST(STRFTIME('%s', 'NOW', '-1 DAY') AS INTEGER)
);
此查询将执行以下操作:

SELECT DISTINCT mac FROM t WHERE mac NOT IN (
    SELECT mac FROM t WHERE time < CAST(STRFTIME('%s', 'NOW', '-1 DAY') AS INTEGER)
);
此查询将执行以下操作:

SELECT DISTINCT mac FROM t WHERE mac NOT IN (
    SELECT mac FROM t WHERE time < CAST(STRFTIME('%s', 'NOW', '-1 DAY') AS INTEGER)
);

在尝试了两种建议的解决方案后,您的查询返回了更正确的结果。感谢您的帮助:在尝试了两种建议的解决方案之后,您的查询返回了更正确的结果。感谢您的帮助:在尝试了两种建议的解决方案之后,您的查询返回了更正确的结果。感谢您的帮助:在尝试了两种建议的解决方案之后,您的查询返回了更正确的结果。感谢帮助:感谢帮助,似乎ls_dev的查询返回了更多的行,不太确定细微的区别是什么我的查询返回的数据是基于今天减去前几天出现的所有mac地址。LS_dev查询基于当前时间和从现在开始的最后24小时注意您的状况mac IN。。。这是多余的。您可以删除它并保留相同的查询结果。感谢您的帮助,ls_dev的查询似乎返回了更多行,但不太确定细微的区别是什么我的查询返回的数据基于今天减去前几天存在的所有mac地址。LS_dev查询基于当前时间和从现在开始的最后24小时注意您的状况mac IN。。。这是多余的。您可以删除它并保留相同的查询结果。感谢您的帮助,ls_dev的查询似乎返回了更多行,但不太确定细微的区别是什么我的查询返回的数据基于今天减去前几天存在的所有mac地址。LS_dev查询基于当前时间和从现在开始的最后24小时注意您的状况mac IN。。。这是多余的。您可以删除它并保留相同的查询结果。感谢您的帮助,ls_dev的查询似乎返回了更多行,但不太确定细微的区别是什么我的查询返回的数据基于今天减去前几天存在的所有mac地址。LS_dev查询基于当前时间和从现在开始的最后24小时注意您的状况mac IN。。。这是多余的。您可以删除它,以保持相同的查询结果。