programing

MySQL에서 "Every derived table must airas"라는 오류는 무엇입니까?

projobs 2022. 12. 10. 14:02
반응형

MySQL에서 "Every derived table must airas"라는 오류는 무엇입니까?

MySQL에서 이 쿼리를 실행하고 있습니다.

SELECT ID FROM (
    SELECT ID, msisdn
    FROM (
        SELECT * FROM TT2
    )
);

이 에러가 발생하고 있습니다.

파생된 각 테이블에는 고유한 별칭이 있어야 합니다.

이 에러의 원인은 무엇입니까?

모든 파생 테이블(AKA 서브쿼리)에는 에일리어스가 있어야 합니다.즉, 괄호 안의 각 쿼리에 별칭을 지정해야 합니다.AS whatever외부 쿼리의 나머지 부분에서 참조하기 위해 사용할 수 있습니다.

SELECT ID FROM (
    SELECT ID, msisdn FROM (
        SELECT * FROM TT2
    ) AS T
) AS T

물론 사용자의 경우 전체 쿼리를 다음과 같이 대체할 수 있습니다.

SELECT ID FROM TT2

내 생각엔 이렇게 하라고 하는 것 같아.

SELECT ID
FROM (SELECT ID,
             msisdn 
      FROM (SELECT * FROM TT2) as myalias
     ) as anotheralias;

하지만 애초에 왜 이런 질문을 쓰신 거죠?

에일리어스가 없으면 개서할 수 없는 다른 예를 다음에 나타냅니다.GROUP BY DISTINCT).

라고 하는 테이블을 상상해 보세요.purchases에 의해 이루어진 구매를 기록하는customersstores예를 들어, 테이블이 여러 개이고 소프트웨어는 둘 이상의 매장에서 어떤 고객이 구입했는지 알아야 합니다.

SELECT DISTINCT customer_id, SUM(1)
  FROM ( SELECT DISTINCT customer_id, store_id FROM purchases)
  GROUP BY customer_id HAVING 1 < SUM(1);

오류와 함께 중단됩니다.Every derived table must have its own alias. 수정 방법:

SELECT DISTINCT customer_id, SUM(1)
  FROM ( SELECT DISTINCT customer_id, store_id FROM purchases) AS custom
  GROUP BY customer_id HAVING 1 < SUM(1);

(주의:AS custom에일리어스).

적절한 답변이 있는지, 이 오류가 발생한 구문 오류가 발생했는지, 아니면 제가 직접 답변을 올릴 수 있는지 확인해보려고 이곳에 왔습니다.

네, 여기 답변이 이 오류의 의미를 설명하고 있기 때문에 더 이상 말할 것은 없지만, 그래도 저는 제 말을 사용하여 2센트를 제시하겠습니다.

이 에러는 기본적으로 다음 서브쿼리가 포함된 새 테이블을 생성하기 때문에 발생합니다.FROM명령어를 입력합니다.

그게 뭐냐면derived table즉, 그 때문에, 이 시스템은alias(실제로 그 이름을 참조).

다음과 같은 가상 쿼리를 지정합니다.

SELECT id, key1
FROM (
    SELECT t1.ID id, t2.key1 key1, t2.key2 key2, t2.key3 key3
    FROM table1 t1 
    LEFT JOIN table2 t2 ON t1.id = t2.id
    WHERE t2.key3 = 'some-value'
) AS tt

마지막으로, 모든 서브쿼리가FROM명령어를 실행하면 에일리어스된 테이블이 생성됩니다.tt그리고 다음과 같은 컬럼이 있습니다.id,key1,key2,key3.

그리고 첫 번째와 함께SELECT최종적으로는,id그리고.key1(을 참조해 주세요).tt).

언급URL : https://stackoverflow.com/questions/1888779/what-is-the-error-every-derived-table-must-have-its-own-alias-in-mysql

반응형