본문 바로가기
MYSQL

MYSQL - 이중 조건 처리

by 하니__ 2024. 5. 17.

 

 

친구들의 일정을 가져오되  현재 시간 기준으로 현재 시간보다 전의 일정들만 가져온다
내 아이디는 1이라고 가정
select u.nickname, s.content, s.date, s.isDone
from follow f
join schedule s
	on f.followeeId = s.userId
join user u
	on s.userId = u.id
where f.followerId = 1;

라고 작성하였는데

현재시간 보다 전의 일정들만

가져온다는 조건을 어디에 넣어야 할지 생각이 들지 않는다 이때는

 

select u.nickname, s.content, s.date, s.isDone
from follow f
join schedule s
	on f.followeeId = s.userId
join user u
	on s.userId = u.id
where f.followerId = 1 and s.date < now();
select u.nickname, s.content, s.date, s.isDone
from follow f
join schedule s
	on f.followeeId = s.userId and s.date < now()
join user u
	on s.userId = u.id
where f.followerId = 1;

where 조건에 and 하거나

join 조건에 and 하여도 가능하다

 

 

결과는 같다

 

 

 

 

-- 완료 여부를 체크하는 SQL(완료 했다)
update schedule
set isDone = 1
where Id = 438;

-- 완료 여부를 체크하는 SQL(완료 안했다)
update schedule
set isDone = 0
where Id = 438;

이 주문을 두개가 아니라 하나로 만들어보자

 

 

update schedule
set isDone = if (isDone = 0, 1 , 0 )
where Id = 438;