> 데이터 베이스 > MySQL 튜토리얼 > FROM 절의 MySQL 뷰 및 하위 쿼리: 5.0 제한을 극복하는 방법은 무엇입니까?

FROM 절의 MySQL 뷰 및 하위 쿼리: 5.0 제한을 극복하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2025-01-08 09:07:44
원래의
172명이 탐색했습니다.

MySQL Views and Subqueries in the FROM Clause: How to Overcome the 5.0 Limitation?

MySQL 5.0 보기의 FROM 절에 대한 하위 쿼리: 제한 사항 및 해결 방법

MySQL 5.0 사용자는 FROM 절에 하위 쿼리가 포함된 뷰를 생성하려고 할 때 오류가 발생할 수 있습니다. 오류 메시지는 "ERROR 1349(HY000): 뷰의 SELECT에 FROM 절에 하위 쿼리가 포함되어 있습니다."입니다. 하위 쿼리가 포함된 복잡한 쿼리를 기반으로 뷰를 만듭니다.

한 가지 가능한 해결 방법은 각 하위 쿼리에 대해 별도의 보기를 만든 다음 하위 쿼리를 이러한 파생 보기로 바꾸는 것입니다. 다음 예시 쿼리를 고려해 보세요.

<code class="language-sql">SELECT temp.UserName
FROM (
  SELECT u1.name AS UserName, COUNT(m1.UserFromId) AS SentCount
  FROM Message m1, User u1
  WHERE u1.uid = m1.UserFromId
  GROUP BY u1.name HAVING SentCount > 3
) AS temp;</code>
로그인 후 복사

이 제한을 피하기 위해 두 하위 쿼리 모두에 대해 뷰를 생성할 수 있습니다.

<code class="language-sql">CREATE VIEW v_user_sent_count AS
  SELECT u1.name AS UserName, COUNT(m1.UserFromId) AS SentCount
  FROM Message m1, User u1
  WHERE u1.uid = m1.UserFromId
  GROUP BY u1.name;

CREATE VIEW v_users_sent_over_3 AS
  SELECT UserName FROM v_user_sent_count
  WHERE SentCount > 3;</code>
로그인 후 복사

원래 쿼리에서 하위 쿼리를 파생 뷰로 바꿉니다.

<code class="language-sql">SELECT UserName
FROM v_users_sent_over_3;</code>
로그인 후 복사

이 접근 방식을 사용하면 FROM 절에 하위 쿼리 제한이 있는 MySQL 버전에서 복잡한 하위 쿼리를 기반으로 뷰를 생성할 수 있습니다. 그러나 FROM 절 없이 모든 하위 쿼리를 표현할 수 있는 것은 아닙니다. 예를 들어 정렬 또는 필터링에 사용되는 하위 쿼리에는 상관 하위 쿼리 또는 창 함수 사용과 같은 다른 방법이 필요할 수 있습니다.

위 내용은 FROM 절의 MySQL 뷰 및 하위 쿼리: 5.0 제한을 극복하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿