[SQL] 1052 : 필드 목록에서 열 'ID는'모호
SQL1052 : 필드 목록에서 열 'ID는'모호
난 2 개 테이블. 이들의 id 필드 모두 가지고 tbl_names 및 tbl_section. 어떻게 항상이 오류 때문에 나는, id 필드를 선택 가야합니까 :
1052: Column 'id' in field list is ambiguous
여기 내 쿼리는 다음과 같습니다
SELECT id, name, section
FROM tbl_names, tbl_section
WHERE tbl_names.id = tbl_section.id
난 그냥 모든 필드를 선택하고 오류를 방지 할 수있다. 하지만 성능이 낭비 될 것이다. 어떻게해야합니까?
해결법
-
==============================
1.중 전체 테이블 이름으로 참조를 앞에 붙여 열을 자격을 갖춘 SQL 지원 :
중 전체 테이블 이름으로 참조를 앞에 붙여 열을 자격을 갖춘 SQL 지원 :
SELECT tbl_names.id, tbl_section.id, name, section FROM tbl_names JOIN tbl_section ON tbl_section.id = tbl_names.id
... 또는 테이블 별칭 :
SELECT n.id, s.id, n.name, s.section FROM tbl_names n JOIN tbl_section s ON s.id = n.id
왜 당신이이보다 더 많은 입력 - 테이블 별칭은 권장되는 방법입니다?
둘째, 내 대답은 ANSI-92 (당신은 ANSI-89입니다) JOIN 구문을 사용합니다. 그들은 같은, ANSI-89 구문은 지원하지 않습니다 수행하는 동안 OUTER은 (RIGHT, LEFT, FULL)를 결합한다. ANSI-89 구문은 그것을 강화하기 위해 ANSI-89 구문 투표하지 누가 SO에 많은가, 사용되지 고려되어야한다. 자세한 내용은이 질문을 참조하십시오.
-
==============================
2.당신의 SELECT 문에 당신은 당신이에서 선택하려는 테이블로 ID를 서문을해야합니다.
당신의 SELECT 문에 당신은 당신이에서 선택하려는 테이블로 ID를 서문을해야합니다.
SELECT tbl_names.id, name, section FROM tbl_names INNER JOIN tbl_section ON tbl_names.id = tbl_section.id
또는
SELECT tbl_section.id, name, section FROM tbl_names INNER JOIN tbl_section ON tbl_names.id = tbl_section.id
-
==============================
3.당신은 예컨대, 정규화 된 이름을 제공하여 그렇게 할 것입니다 :
당신은 예컨대, 정규화 된 이름을 제공하여 그렇게 할 것입니다 :
SELECT tbl_names.id as id, name, section FROM tbl_names, tbl_section WHERE tbl_names.id = tbl_section.id
당신에게 tbl_names의 ID를 줄 것이다
-
==============================
4.당신이 아마 정말 여기에서하고자하는 것은이 같은 노조의 연산자를 사용하는 것입니다 :
당신이 아마 정말 여기에서하고자하는 것은이 같은 노조의 연산자를 사용하는 것입니다 :
(select ID from Logo where AccountID = 1 and Rendered = 'True') union (select ID from Design where AccountID = 1 and Rendered = 'True') order by ID limit 0, 51
여기에 대한 문서를의 https://dev.mysql.com/doc/refman/5.0/en/union.html
-
==============================
5.이미 귀하의 질문에 대한 답변을 많이가있다, 당신은이를 좋아 할 수 있습니다. 당신은 당신의 테이블을 별칭 이름과 사용을 줄 수있는이 같은 선택 쿼리 :
이미 귀하의 질문에 대한 답변을 많이가있다, 당신은이를 좋아 할 수 있습니다. 당신은 당신의 테이블을 별칭 이름과 사용을 줄 수있는이 같은 선택 쿼리 :
SELECT a.id, b.id, name, section FROM tbl_names as a LEFT JOIN tbl_section as b ON a.id = b.id;
-
==============================
6.가장 간단한 해결책은이 ON 대신 사용하여 조인. 그런 식으로, 데이터베이스가 모두 ID 열이 실제로 동일 것을 "알고있다"것에하지 nitpick :
가장 간단한 해결책은이 ON 대신 사용하여 조인. 그런 식으로, 데이터베이스가 모두 ID 열이 실제로 동일 것을 "알고있다"것에하지 nitpick :
SELECT id, name, section FROM tbl_names JOIN tbl_section USING (id)
ID가 tbl_names 및 tbl_section의 유일한 공통 열 이름 인 경우도 NATURAL JOIN을 사용할 수 있습니다 :
SELECT id, name, section FROM tbl_names NATURAL JOIN tbl_section
참조 : https://dev.mysql.com/doc/refman/5.7/en/join.html
-
==============================
7.아이디의 형식은 다음 두 표에 차이가 있다면 당신은 같은 당신이 한 기본 테이블에서 ID를 사용하도록 선택할 수 있습니다, 그들과 합류 할 당신이 table_customes 및 table_orders이 있으면 말을하고, 주문 그쪽 ID가 101 "처럼 ","102 "..."110 "단지 고객을위한 하나를 사용
아이디의 형식은 다음 두 표에 차이가 있다면 당신은 같은 당신이 한 기본 테이블에서 ID를 사용하도록 선택할 수 있습니다, 그들과 합류 할 당신이 table_customes 및 table_orders이 있으면 말을하고, 주문 그쪽 ID가 101 "처럼 ","102 "..."110 "단지 고객을위한 하나를 사용
select customers.id, name, amount, date from customers.orders;
-
==============================
8.
SELECT tbl_names.id, tbl_names.name, tbl_names.section FROM tbl_names, tbl_section WHERE tbl_names.id = tbl_section.id
from https://stackoverflow.com/questions/6638520/1052-column-id-in-field-list-is-ambiguous by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL Server의 기존 테이블에 기본 값으로 열을 추가 (0) | 2020.03.14 |
---|---|
[SQL] PostgreSQL을의 경우 절에 별칭 컬럼을 사용하여 (0) | 2020.03.14 |
[SQL] 엔티티 LINQ는 방법 '선택 System.String ToString () 메소드를 인식하지 않고,이 방법은 저장 식으로 변환 될 수 없다 (0) | 2020.03.14 |
[SQL] 열 수가 다른 두 개의 테이블을 Unioning (0) | 2020.03.14 |
[SQL] 다른 행에 다른 조건을 충족하는 값을 선택? (0) | 2020.03.14 |