【发布时间】:2020-10-02 08:42:35
【问题描述】:
我正在处理项目,我需要在表中找到名为状态的一列(此列的值从 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);
【问题讨论】:
-
为什么要添加条件
NOT(status !=9)?就这样吧……只要 astWHERE status = 8就足够了,这意味着status不是9。 -
因为每个** id** 都有多个状态(1-12),我只需要具有 8 个状态但仍然没有 9 或 10 个状态的 id
-
不要标记 3 个完全不同的 RDBMS。只标记您真正使用的RDBMS。我已经删除了所有冲突的标签,edit 你的问题是正确的only。
-
where status = 8仅选择列具有值8的那些行。所以它永远不会是9-not (status <> 9)与status = 9相同,status = 8 and status = 9永远不会是真的 -
我怀疑 OPs 样本数据并没有讲述真实的故事,@deHaar,并且一行(比如 id
666)也可能有一行状态为9;样本并不能很好地反映真正的问题。
标签: sql subquery window-functions