我正在使用具有documents
以下字段的单个表(称为 ):id
、parent_id
和status
。parent_id
字段是指同一个表中的字段id
。该status
字段的类型为ENUM('submitted', 'accepted', 'rejected')
。
我想选择所有没有documents
孩子的地方。status = 'accepted'
我的第一次尝试是这样的:
SELECT DISTINCT `documents`.*
FROM (`documents`)
LEFT OUTER JOIN `documents` children_documents
ON `documents`.`id` = `children_documents`.`parent_id`
WHERE `children_documents`.`id` IS NULL
OR `children_documents`.`status` != 'accepted'
这样做的问题是仍然会选择包含已接受和未接受子项的文档。不应选择包含任何已接受子项的文档。
我有一种感觉GROUP BY
可能是我的朋友,但我不知道如何使用它来获得预期的结果。