>  기사  >  데이터 베이스  >  MySQL의 단일 하위 쿼리에서 여러 열을 선택하는 방법은 무엇입니까?

MySQL의 단일 하위 쿼리에서 여러 열을 선택하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-26 22:43:02309검색

How to Select Multiple Columns from a Single Subquery in MySQL?

MySQL의 단일 하위 쿼리에서 여러 열 선택

문제

여러 테이블을 처리할 때 MySQL에서 여러 열을 선택해야 할 수도 있습니다. 하위 쿼리. 그러나 단순 조인은 하위 테이블에 누락된 레코드가 있는 경우 원하는 결과를 얻지 못할 수 있습니다.

해결책

이 문제를 해결하는 열쇠는 테이블이 두 물리적 테이블 모두에서 파생될 수 있다는 점을 이해하는 데 있습니다. 그리고 하위 쿼리. 이 개념을 활용하면 단일 하위 쿼리에서 여러 열을 검색하는 것이 가능해집니다.

다음 예를 고려하세요.

SELECT a.attr, b.id, b.trans, b.lang
FROM attribute a
JOIN (
  SELECT at.id AS id, at.translation AS trans, at.language AS lang, a.attribute
  FROM attributeTranslation at
) b ON (a.id = b.attribute AND b.lang = 1)

이 예에서 하위 쿼리는 다음을 포함하는 가상 테이블 b를 생성합니다. 원하는 열. 이 가상 테이블을 기본 테이블 a와 결합하면 단일 쿼리로 필요한 모든 데이터를 검색할 수 있습니다.

기술 확장

이 기술은 요약 또는 그룹화 테이블을 포함하도록 더욱 확장될 수 있습니다. . 예를 들어 다음 쿼리는 각 속성에 대한 번역 횟수가 포함된 가상 테이블 c를 생성합니다.

SELECT a.attr, b.id, b.trans, b.lang, c.langcount
FROM attribute a
JOIN (
  SELECT at.id AS id, at.translation AS trans, at.language AS lang, at.attribute
  FROM attributeTranslation at
) b ON (a.id = b.attribute AND b.lang = 1)
JOIN (
  SELECT count(*) AS langcount,  at.attribute
  FROM attributeTranslation at
  GROUP BY at.attribute
) c ON (a.id = c.attribute)

이 쿼리는 각 속성에 대한 번역 횟수와 함께 원하는 열을 반환합니다.

성능 고려 사항

이 기술은 유연성을 제공하지만 성능도 고려해야 합니다. MySQL 최적화 프로그램은 유사한 하위 쿼리를 병합할 수 있지만 하위 쿼리의 과도한 사용을 피하고 효율성을 위해 쿼리를 최적화하는 것이 좋습니다. 일부 시나리오에서는 여러 테이블을 조인하는 것이 더 효율적인 옵션일 수 있습니다.

위 내용은 MySQL의 단일 하위 쿼리에서 여러 열을 선택하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.