选择*拥有其子女符合某些条件的父母记录

时间:2019-05-15 08:47:32

标签: sql

假设我们有todos表,其中的字段titledeadlinesubtasks表具有每个待办事项的子任务。

因此每个子任务都有contenttodo_id字段。

如何获取所有子任务满足某些条件的待办事项?

例如content LIKE 'foo'

1 个答案:

答案 0 :(得分:2)

您可以使用INNER JOIN使用以下解决方案:

SELECT DISTINCT t.* 
FROM todos t INNER JOIN subtasks st ON t.id = st.todo_id 
WHERE st.content LIKE '%foo%'

...或使用EXISTS

SELECT * 
FROM todos 
WHERE EXISTS (
    SELECT 1 
    FROM subtasks 
    WHERE todos.id = subtasks.todo_id AND subtasks.content LIKE '%foo%'
)

...或使用IN

SELECT * 
FROM todos 
WHERE id IN (
    SELECT todo_id 
    FROM subtasks 
    WHERE content LIKE '%foo%'
)