Sql 选择*其子记录满足某些条件的父记录

Sql 选择*其子记录满足某些条件的父记录,sql,Sql,假设我们有todo表,其中包含字段title,deadline和子任务表,每个todo都有子任务 因此,每个子任务都有内容和待办事项id字段 如何获取子任务内容满足某些条件的所有TODO 例如,像“foo”这样的内容您可以使用内部联接使用以下解决方案: SELECT DISTINCT t.* FROM todos t INNER JOIN subtasks st ON t.id = st.todo_id WHERE st.content LIKE '%foo%' SELECT * FRO

假设我们有
todo
表,其中包含字段
title
deadline
子任务
表,每个todo都有子任务

因此,每个子任务都有
内容
待办事项id
字段

如何获取子任务内容满足某些条件的所有TODO


例如,像“foo”这样的
内容
您可以使用
内部联接使用以下解决方案:

SELECT DISTINCT t.* 
FROM todos t INNER JOIN subtasks st ON t.id = st.todo_id 
WHERE st.content LIKE '%foo%'
SELECT * 
FROM todos 
WHERE id IN (
    SELECT todo_id 
    FROM subtasks 
    WHERE content LIKE '%foo%'
)
。。。或使用
存在

SELECT * 
FROM todos 
WHERE EXISTS (
    SELECT 1 
    FROM subtasks 
    WHERE todos.id = subtasks.todo_id AND subtasks.content LIKE '%foo%'
)
。。。或在
中使用

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

您可以使用
内部联接使用以下解决方案:

SELECT DISTINCT t.* 
FROM todos t INNER JOIN subtasks st ON t.id = st.todo_id 
WHERE st.content LIKE '%foo%'
SELECT * 
FROM todos 
WHERE id IN (
    SELECT todo_id 
    FROM subtasks 
    WHERE content LIKE '%foo%'
)
。。。或使用
存在

SELECT * 
FROM todos 
WHERE EXISTS (
    SELECT 1 
    FROM subtasks 
    WHERE todos.id = subtasks.todo_id AND subtasks.content LIKE '%foo%'
)
。。。或在
中使用

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

标记数据库名称并同时添加样本和预期数据。标记数据库名称并同时添加样本和预期数据。