SQL 选择 : "Give me all documents where all of the documents procedures are ' work in progress'"

标签 sql mysql

这个真的让我难住了。我有一个文件表,其中包含有关文件的信息,还有一个程序表,有点像每个文件的修订表。我需要做的是编写一个选择语句,它为我提供所有文档,其中所有过程的状态为“work_in_progress”。这是一个例子

程序表:

document_id | status
1           | 'wip' 
1           | 'wip'
1           | 'wip'
1           | 'approved'
2           | 'wip'
2           | 'wip'
2           | 'wip'

在这里,我希望我的查询只返回文档 ID 2,因为它的所有状态都是 work_in_progress。我不想要 document_id 1,因为它的状态之一是“已批准”。我相信这是我想要的关系部门,但我不确定从哪里开始。这是 MySQL 5.0,仅供引用。

最佳答案

我会这样做:

SELECT document_id, document_name, ...
FROM documents AS d
WHERE NOT EXISTS (SELECT document_id
                  FROM procedures
                  WHERE document_id = d.document_id
                      AND status != 'wip');

也就是说,“显示所有文档,其中在过程中没有任何行的状态不是 'wip'”。

所以它与您描述的方式有点不同。而不是“所有的行都是'wip'”,您验证没有任何行不是'wip'。

关于SQL 选择 : "Give me all documents where all of the documents procedures are ' work in progress'",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2673053/

相关文章:

sql - 存储为数字而不是文本对数据库性能有何改进?

java - SQLStateConverter.handledNonSpecificException hibernate

sql - 运行 SQL 查询时出现 "ORA-00913: too many values"错误

mysql - 尝试在 xampp 服务器中导入 SQL 文件会返回错误

mysql - MySQL中IN和JOIN的执行顺序

mysql - 简单的 MYSQL 查询返回多行

mysql - 更快的 sql 查询然后加入

php - 无法将数据写入sql表,

mysql - Orchard 中的后台运行功能

php - 我想使用 PHP MYSQL 在同一行中上传多个图像名称