[MySQL] SQL JOIN할 때 나는 1052 에러_ 메시지: Error(1052): Column "something" in "where" is ambiguous.
Table간에 JOIN을 해줄 때 조심해야하는 것 중에 하나가 컬럼 명을 제대로 명시해줘야한다는 점인 것 같다.
가상의 A테이블과 B테이블이 있다고 가정해보자
<<A테이블>> | <<B테이블>> |
primary_a | primary_b |
name | name |
date_a | date_b |
뭐 이런식으로... 테이블마다 컬럼이 3개가 있다고 치자.
여기서 name이라는 값이 동일한데, 이 두 테이블을 각각의 기본키로 조인한다고 가정하자
SELECT A.*, B.* FROM A
JOIN B ON B.primary_b = A.primary_a ;
이렇게 하면 아무 문제 없이 작동할 것이다.
왜냐면 *앞에 테이블 명을 명시해줬으니까.
하지만 B테이블의 name값은 필요없다는 가정 하에 또 조인을 해보자.
SELECT primary_a, name, date_a, primary_b, date_b
FROM A
LEFT JOIN B
ON B.primary_b = A.primary_a ;
이렇게 하면 Column "name" in field list is ambiguous. 이런 에러가 나겠지?
왜냐면 중복되는 name 컬럼이 어느 테이블에 있는걸 조회하는 건지를 모르니까
SELECT A.*, B.* FROM A
JOIN B ON B.primary_b = A.primary_a
ORDER BY name ;
이렇게 정렬할 때도 중복되는 컬럼의 값으로 정렬을 하고자 하면
Column "name" in order clause is ambiguous. 이렇게 에러메시지가 뜬다.
어떤 테이블의 name 컬럼 값으로 정렬할 지 모르기때문이다.
SQL 오류(1052) 가 뜬다면 이런 부분을 우선적으로 확인해주는 것이 좋을 것 같다.
[mySQL] 쿼리 및 서브 쿼리 조회 SELECT 결과 하나로 합치기 (feat. GROUP_CONCAT()) (0) | 2022.01.12 |
---|---|
[h2 database] 기존 DB외 h2 DB 하나 더 생성하는 법 (0) | 2021.05.23 |
[mySQL] mySQL ERD생성하기, ERD자동 생성 (2) | 2021.05.17 |
[mySQL] 테이블에 저장된 값 export하기, 다른 테이블 값 쉽게 Insert하기 (1) | 2021.05.16 |
[mySQL 특정 날짜 조회] mySQL 날짜만 비교해서 해당 날짜에 해당하는 값 조회하기 (1) | 2021.05.02 |