如何从我选择的列中排除某个值

twh00eeo  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(390)


我有一张这样的table。
我想创建一个表,显示所有包含报警\u 1但不包含报警\u 4的运行的机器\u id和运行\u id
所以我想要一些东西给我看

我只是不知道该怎么做,因为如果我说“show rows where alarm\u name!=报警4“然后它将显示有报警1、报警2和报警3的运行。

xzv2uavs

xzv2uavs1#

包含报警\u 1但不包含报警\u 4的所有运行的计算机\u id和运行\u id
聚合和 having 请记住:

select machine_id, run_id
from t
where alarm_name in ('Alarm_1', 'Alarm_4')
group by machine_id, run_id
having min(alarm_name) = 'Alarm_1' and max(alarm_name) = 'Alarm_4';

因为 'Alarm_1' < '警报4' , you can simplify the 有从句到:

having max(alarm_name) = 'Alarm_4'
pod7payv

pod7payv2#

使用 NOT EXISTS :

SELECT t1.machine_id, t1.run_id
FROM tablename t1
WHERE t1.alarm_name = 'Alarm_1'
  AND NOT EXISTS (
    SELECT 1
    FROM tablename t2
    WHERE t2.machine_id = t1.machine_id AND t2.run_id = t1.run_id AND t2.alarm_name = 'Alarm_4'
  )

相关问题