Sql server 如何查找具有特定值的记录

Sql server 如何查找具有特定值的记录,sql-server,tsql,Sql Server,Tsql,我有一个日志表,可以检查在哪个表中插入了多少条记录 我想找到从完整日志中插入0条记录的设备 样本数据 Id DeviceID Success RecordInserted ErrorMessage LogDate 1 0000ACFFFE4D48 1 395 NULL 2018-05-11 12:54:55.713 2 0000ACFFFE4E6A 1 492 NULL 2018-05-11 12:55:10.277 3 0000ACFFFE5

我有一个日志表,可以检查在哪个表中插入了多少条记录

我想找到从完整日志中插入0条记录的设备

样本数据

Id  DeviceID    Success RecordInserted  ErrorMessage    LogDate
1   0000ACFFFE4D48  1   395 NULL    2018-05-11 12:54:55.713
2   0000ACFFFE4E6A  1   492 NULL    2018-05-11 12:55:10.277
3   0000ACFFFE51D9  1   247 NULL    2018-05-11 12:55:17.790
4   0000ACFFFE5585  1   399 NULL    2018-05-11 12:55:28.267
5   0000ACFFFE5B03  1   493 NULL    2018-05-11 12:55:44.313
6   0000ACFFFE56E3  1   456 NULL    2018-05-11 12:56:00.743
7   0000ACFFFE1183  1   410 NULL    2018-05-11 12:56:09.817
8   0000ACFFFE2693  1   333 NULL    2018-05-11 12:56:24.613
9   0000ACFFFE4454  1   456 NULL    2018-05-11 12:56:36.867
10  0000ACFFFE7223  1   10056   NULL    2018-05-11 13:03:04.410
11  0000ACFFFE1CBB  1   10046   NULL    2018-05-11 13:06:03.860
12  0000ACFFFE2F81  1   0   NULL    2018-05-11 13:06:06.567
13  0000ACFFFE6F29  1   0   NULL    2018-05-11 13:06:08.307
14  0000ACFFFE0B8D  1   10078   NULL    2018-05-11 13:10:28.020
15  0000ACFFFE4DF2  1   409 NULL    2018-05-11 13:10:39.950
16  0000ACFFFE4D48  1   0   NULL    2018-05-11 13:16:32.027
17  0000ACFFFE4E6A  1   1   NULL    2018-05-11 13:16:38.640
18  0000ACFFFE51D9  1   1   NULL    2018-05-11 13:16:41.997
19  0000ACFFFE5585  1   1   NULL    2018-05-11 13:16:49.473
20  0000ACFFFE5B03  1   1   NULL    2018-05-11 13:16:56.797
21  0000ACFFFE56E3  1   1   NULL    2018-05-11 13:17:03.703
22  0000ACFFFE1183  1   0   NULL    2018-05-11 13:17:10.283
23  0000ACFFFE2693  1   1   NULL    2018-05-11 13:17:14.830
24  0000ACFFFE4454  1   0   NULL    2018-05-11 13:17:21.880
25  0000ACFFFE7223  1   64  NULL    2018-05-11 14:06:32.153
26  0000ACFFFE1CBB  1   64  NULL    2018-05-11 14:09:26.907
27  0000ACFFFE2F81  1   0   NULL    2018-05-11 14:09:28.743
28  0000ACFFFE6F29  1   0   NULL    2018-05-11 14:09:30.667
29  0000ACFFFE0B8D  1   64  NULL    2018-05-11 14:11:42.227
30  0000ACFFFE4DF2  1   3   NULL    2018-05-11 14:11:48.857
预期产量

0000ACFFFE6F290B
0000ACFFFE2F818D
这2个设备ID已插入0条记录

sql查询

  select deviceid from logs where recordinserted !=0 and deviceid in (select deviceid from logs where recordinserted= '0')
错误

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
子查询返回了多个值。当子查询在=、!=、=或者当子查询用作表达式时。

当recordinserted列为整数类型时,您可以使用类似这样的where子句。

是否正在查找条目为零的设备?或其条目总数为0条记录的设备?我在列表中没有看到预期的输出Id,此Id“0000ACFFFE2F81”有两个条目,都插入了0条记录

select deviceid 
from logs
group by deviceid
having max(recordinserted) = 0 -- no row greater zero exists
对于未列出的DeviceId,DeviceId需要是另一个表的外键,您可以通过此查询找到logs表中没有的设备:

SELECT Id FROM DeviceTable
EXCEPT 
SELECT DeviceId FROM Logs
SELECT DeviceId
      ,SUM(RecordsInserted)
FROM Logs
GROUP BY DeviceId
Having SUM(RecordsInserted) = 0
要获取日志表中记录总数为0的记录,请使用以下查询:

SELECT Id FROM DeviceTable
EXCEPT 
SELECT DeviceId FROM Logs
SELECT DeviceId
      ,SUM(RecordsInserted)
FROM Logs
GROUP BY DeviceId
Having SUM(RecordsInserted) = 0