Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column.To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.
2. 원인
safe모드 기능 때문에 delete나 update가 안되는 상태이다.
3. 해결방안
다음과 같이 safe모드를 0으로 설정하면 된다.
SET SQL_SAFE_UPDATES = 0;
delete from test.member;
select a.name, a.agency, b.title
from kgroup a
left join album b
on a.name = b.name
album 테이블에 러블리즈가 부른 노래가 없으므로 러블리즈의 title컬럼은 null이다.
2. album 의 노래를 부른 가수들의 소속사를 보고싶다면 right join을 이용한다.
select a.agency, b.name, b.title
from kgroup a
right join album b
on a.name = b.name;
3. 전체 목록을 출력하고 싶다면 full outer join을 사용할 수 있다.
mysql 의 경우 full outer join을 지원하지 않으므로
"select * from a left join b on a.no = b.no
union
select * from a right join bon a.no = b.no"
의 형식을 사용하면 된다.
select a.name, a.agency, b.title
from kgroup a
left join album b
on a.name = b.name
union
select b.name, a.agency, b.title
from kgroup a
right join album b
on a.name = b.name;
3_2. 비교 : union all 을 사용할 경우
select a.name, a.agency, b.title
from kgroup a
left join album b
on a.name = b.name
union all
select b.name, a.agency, b.title
from kgroup a
right join album b
on a.name = b.name;
이 때union 과 union all의 차이점을 알아야 한다.
left join과 right join을 합할 경우 가운데 inner join 부분이 중복된다.
union의 경우 중복값을 제거해주고 union all은 중복값을 포함한 결과값들이 출력되므로
SELECT * from(
(
SELECT
a.no,
a.code,
b.price,
b.start_date,
b.end_date
FROM product a
left join sale b
on a.code = b.code
)
Union
(
SELECT
a.no,
a.code,
b.price,
b.start_date,
b.end_date
FROM product a
right join sale b
on a.code = b.code
order by no desc
)
)
where code not in ('9001')
order by code, start_date
이 때 Error Code: 1248 Every derived table must have its own alias 오류가 발생한다.
파생테이블에 명칭(alias )가 있어야한다.
after
SELECT * from(
(
SELECT
a.no,
a.code,
b.price,
b.start_date,
b.end_date
FROM product a
left join sale b
on a.code = b.code
)
Union
(
SELECT
a.no,
a.code,
b.price,
b.start_date,
b.end_date
FROM product a
right join sale b
on a.code = b.code
order by no desc
)
)as c
where code not in ('9001')
order by code, start_date