首页 > 解决方案 > 如何查找具有 8 但仍然没有 9 的列状态值

问题描述

我正在处理项目,我需要在表中找到名为状态的一列(此列的值从 1-12 之间),我想找到低于条件的所有值(如果状态有 8 但仍然没有 9) , 了解更多信息 :

原表:

    File_name           id      status  Execution_number
    Live_package1.zip   333      3      4444443434343
    Live_package2.zip   444      7      8888888886767
    Live_package1.zip   333      8      4444443434343
    Live_package2.zip   444      8      8888888886767
    Live_package2.zip   444     10      8888888886767
    Live_package3.zip   666      8      9999999999999
    Live_package4.zip   111      9      3333333333333

想要的结果

File_name            id       status    Execution_number
Live_package1.zip   333         8        4444443434343
Live_package3.zip   666         8        9999999999999

我正在使用以下代码,但我没有收到预期的结果:

SELECT *
FROM tbl_doc_state
WHERE status       =8
AND NOT(status  !=9);

标签: sqlsubquerywindow-functions

解决方案


如果要排除状态为 8 但其他行具有相同 id 但状态为 9 的行,请使用not存在条件:

SELECT t1.*
FROM tbl_doc_state t1
WHERE status = 8
and not exists (select *
                from tbl_doc_state t2
                where t2.id = t1.id 
                  and t2.status >= 9);

推荐阅读