sql选择所有不符合条件的数据集

yhxst69z  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(474)

我想知道是否可以从日志解析器数据库请求以下条件(是的,没有两个数据库是很糟糕的,但事实就是这样。)
方案:

+-------------------------------------+
|  RegKey   |  Hostname | WinVersion  |
+-----------+-----------+-------------+
|  Regkey1  |   PC1     |    1909     |
|  Regkey2  |   PC1     |    1909     |
|  Regkey3  |   PC1     |    1909     |
|  Regkey1  |   PC2     |    1803     |
|  Regkey1  |   PC3     |    1909     |
|  Regkey2  |   PC3     |    1909     |
+-------------------------------------+

hostname和winversion在每个数据集中都适合,但是每个regkey都有自己的数据集。我要找的是一个语句来列出或计算所有数据集都没有的主机名(regkey,比如regkey3)。因此,它会生成一个缺少regkey3的所有主机名的列表。
当我使用where和group by时,当然会得到所有主机名,因为只有regkey3数据集被过滤。但这有可能吗?我试过了,但这似乎只适用于计数或数字比较。
谢谢!
尼科

oymdgrw7

oymdgrw71#

您可以使用:

select hostname
from t
group by hostname
having sum(case when RegKey LIKE RegKey3 then 1 else 0 end) = 0;

您可以尝试以下方法:

select distinct hostname
from t
where not exists (select 1 from t t2 where t2.hostname = t.hostname and t2.RegKey like RegKey3);

相关问题