Sql server 如何查找具有特定值的记录
我有一个日志表,可以检查在哪个表中插入了多少条记录 我想找到从完整日志中插入0条记录的设备 样本数据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
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