我有如下表获取与参考表不同的状态相同主键列
id task_id stage_id is_completed
1 1 1 1
2 1 2 1
3 1 3 0
4 2 1 1
5 2 2 0
6 2 3 1
7 3 1 1
8 3 2 1
9 3 3 0
我怎样才能得到所有task_ids其中stage_id = 1和is_completed = 1和stage_id = 2,is_completed = 0
我有如下表获取与参考表不同的状态相同主键列
id task_id stage_id is_completed
1 1 1 1
2 1 2 1
3 1 3 0
4 2 1 1
5 2 2 0
6 2 3 1
7 3 1 1
8 3 2 1
9 3 3 0
我怎样才能得到所有task_ids其中stage_id = 1和is_completed = 1和stage_id = 2,is_completed = 0
SELECT *从mt_task_status 其中 TASK_ID在(SELECT TASK_ID FROM mt_task_status WHERE stage_id = '1' 和is_completed = '1') 和TASK_ID在(SELECT TASK_ID FROM mt_task_status WHERE stage_id = '2' 和is_completed ='0') and stage_id in(1,2) order by task_id
使用union
:
select task_id from table where stage_id = 1 and is_completed = 1
union
select task_id from table where stage_id = 2 and is_completed = 0
您可以使用AND
和OR
,例如组合:
SELECT task_id
FROM tasks
WHERE (stage_id = 1 AND is_completed = 1)
OR (stage_id = 2 AND is_completed = 2)
GROUP BY task_id;
感谢您的回复,但我需要的是task_ids,其中stage_id = 1必须完成且stage_id = 2未完成。没有一个 – Adalarasu
这个查询将返回两个,而不是其中任何一个。 –
是的,但我只需要那些相应的task_ids,其中两个条件都满足E.g.从我的桌子我应该只获得task_id 2,其他人在两个阶段完成。只有task_id 2是(阶段1完成,阶段2未完成) – Adalarasu