首页 > 解决方案 > 我想写一个查询,我只能选择特定的行,并想忽略 SQL 中的一些不同的行

问题描述

我有一张表,其中 BrandId 在具有不同状态(如pendingRunning)的表中重复多次。我想要状态仅处于待处理状态的行。如果任何 BrandId 的状态为挂起和正在运行,那么我们不希望在输出中出现这个,我想忽略这些 BrandId 并且不希望在输出中出现该行。

样本输入表数据

我只想要那些状态仅为待定的 BrandId。

谁能告诉我有关查询以获得所需结果的信息?

我们想要的样本输出数据

标签: sqlsql-serverazure-sql-database

解决方案


使用 not exists 过滤那些只有待处理的记录,如下所示:

SELECT distinct ID, BRANDID, STATUS FROM TABLE1 A WHERE STATUS = 'pending'
AND NOT EXISTS(SELECT 1 FROM TABLE1 B WHERE A.ID = B.ID AND A.BRANDID = B.BRANDID AND B.STATUS = 'Running');

推荐阅读