집 >데이터 베이스 >MySQL 튜토리얼 >SQL 오류 1066: '고유하지 않은 테이블/별칭: 'user''를 해결하는 방법은 무엇입니까?
데이터베이스 쿼리 작업 시, 고유하지 않은 테이블이나 별칭을 나타내는 오류 1066이 발생할 수 있습니다. 이는 일반적으로 적절한 별칭을 지정하지 않고 동일한 테이블을 여러 번 조인할 때 발생합니다.
다음 시나리오를 고려하십시오. 사용자 테이블의 행을 참조하는 작성자_id 및 수정_by와 같은 열이 있는 아티클 테이블이 있습니다. SQL 쿼리는 기사 테이블에서 데이터를 가져오고 기사를 마지막으로 수정한 사용자와 작성자에 대한 정보를 검색하는 것을 목표로 합니다. 그러나 쿼리를 실행하면 오류가 발생합니다.
#1066 - Not unique table/alias: 'user'
이 오류 메시지는 사용자 테이블이 고유한 별칭이 지정되지 않은 채 쿼리에서 여러 번 조인되었음을 나타냅니다.
동일한 테이블을 여러 번 조인할 때 데이터베이스는 다음을 구별해야 합니다. 해당 테이블의 다른 인스턴스. 이를 수행하려면 각 인스턴스에 고유한 별칭을 할당해야 합니다. 이는 쿼리에서처럼 조인된 여러 인스턴스에서 열을 검색할 때 특히 중요합니다.
SELECT article.*, section.title, category.title, user.name, user.name FROM article INNER JOIN section ON article.section_id = section.id INNER JOIN category ON article.category_id = category.id INNER JOIN user ON article.author_id = user.id LEFT JOIN user ON article.modified_by = user.id WHERE article.id = '1'
테이블의 두 인스턴스를 구별하지 않고 사용자 별칭을 두 번 사용했다는 점에 유의하세요. 이로 인해 데이터베이스가 혼동되고 "고유하지 않은 테이블/별칭" 오류가 발생합니다.
이 문제를 해결하려면 사용자 테이블은 두 번째로 조인할 때 별칭이 됩니다. 이렇게 하면 두 인스턴스가 구분되고 쿼리가 성공적으로 실행될 수 있습니다.
코드를 수정하여 오류를 수정하는 방법은 다음과 같습니다.
SELECT article.*, section.title, category.title, user.name, u2.name FROM article INNER JOIN section ON article.section_id = section.id INNER JOIN category ON article.category_id = category.id INNER JOIN user ON article.author_id = user.id LEFT JOIN user u2 ON article.modified_by = u2.id WHERE article.id = '1'
이 업데이트된 쿼리에서 두 번째 사용자 테이블의 인스턴스에는 u2라는 별칭이 제공됩니다. 이를 통해 데이터베이스는 두 인스턴스를 구별하고 오류를 해결할 수 있습니다.
위 내용은 SQL 오류 1066: '고유하지 않은 테이블/별칭: 'user''를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!