如何使用SQL获取特定机器独有的Alarm Code?
获取machine_1独有Alarm Code的SQL语句
方法一:子查询排除法
SELECT DISTINCT Alarm_Code FROM machine_status WHERE machine_name = 'machine_1' AND Alarm_Code NOT IN ( SELECT DISTINCT Alarm_Code FROM machine_status WHERE machine_name != 'machine_1' );
先筛选出machine_1的所有报警码,再排除那些在其他机器上出现过的记录,最终得到仅属于machine_1的报警码。
方法二:分组统计法
SELECT Alarm_Code FROM machine_status GROUP BY Alarm_Code HAVING COUNT(DISTINCT machine_name) = 1 AND MAX(machine_name) = 'machine_1';
按报警码分组后,统计每个报警码对应的机器数量,仅保留机器数量为1且唯一机器是machine_1的报警码。
方法三:左连接排除法
SELECT DISTINCT ms1.Alarm_Code FROM machine_status ms1 LEFT JOIN machine_status ms2 ON ms1.Alarm_Code = ms2.Alarm_Code AND ms2.machine_name != 'machine_1' WHERE ms1.machine_name = 'machine_1' AND ms2.Alarm_Code IS NULL;
将machine_1的报警记录与其他机器的同码记录左连接,筛选出没有匹配结果的记录(即其他机器无此报警码)。
内容的提问来源于stack exchange,提问作者user22060295
相关产品推荐
相关产品推荐

