MySQL 하위 쿼리에서 여러 열/필드 선택
기본적으로 속성 테이블과 변환 테이블이 있습니다.즉, 1개의 속성에는 다수의 변환이 있습니다.
특정 언어의 번역 레코드가 없는 경우에도 각 Atribute에 대해 번역에서 id와 값을 선택해야 합니다.여기서 join 기술을 찾을 수 없거나 join(언어 테이블을 포함하지 않음)이 기능하지 않습니다.다음은 지정된 언어로 존재하지 않는 변환으로 속성을 반환하지 않기 때문입니다.
select a.attribute, at.id, at.translation
from attribute a left join attributeTranslation at on a.id=at.attribute
where al.language=1;
이렇게 서브쿼리를 사용하고 있습니다.이러한 문제는 파라미터가 같은 테이블에2개의 서브쿼리를 작성하는 것입니다(MySQL이 이들을 그룹화하지 않는 한 퍼포먼스 저하와 같은 느낌입니다.이것은 많은 유사한 서브쿼리를 실행할 수 있도록 하기 때문입니다).
select attribute,
(select id from attributeTranslation where attribute=a.id and language=1),
(select translation from attributeTranslation where attribute=a.id and language=1),
from attribute a;
하나의 쿼리에서 id와 번역을 얻을 수 있으면 좋기 때문에 컬럼을 합성하고 나중에 문자열에서 id를 가져옵니다.이것은 적어도 하나의 서브쿼리를 만들고 있지만 여전히 올바르게 보이지 않습니다.
select attribute,
(select concat(id,';',title)
from offerAttribute_language
where offerAttribute=a.id and _language=1
)
from offerAttribute a
그래서 질문 부분.단일 서브쿼리에서 여러 열을 가져올 수 있는 방법이 있습니까? 아니면 두 개의 서브쿼리를 사용해야 합니까(MySQL은 이들을 그룹화할 수 있을 만큼 스마트합니다). 아니면 다음과 같은 방법으로 참여해야 합니까?
[[언어]에서 번역으로] (3개의 테이블이 서브쿼리보다 퍼포먼스가 나쁜 것 같습니다)
네, 할 수 있어요.필요한 요령은 테이블서버에서 테이블을 꺼내는 두 가지 방법이 있다는 개념입니다.한 가지 방법은...
FROM TABLE A
또 다른 방법은
FROM (SELECT col as name1, col2 as name2 FROM ...) B
select 구와 그 주변의 괄호는 테이블, 즉 가상 테이블임을 유의하십시오.
따라서 두 번째 코드 예를 사용하여 (여기서 취득하고 싶은 컬럼을 추측합니다)
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)
실제 테이블은attribute
이 조인에서 첫 번째 테이블입니다.이 가상 테이블은b
두 번째 테이블입니다.
이 기술은 가상 테이블이 요약 테이블일 때 특히 유용합니다.
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)
어떻게 되는지 보여?가상 테이블을 생성했습니다.c
두 개의 열을 포함하고, 다른 두 개의 열과 결합하고, 열 중 하나를 사용하여ON
절을 지정하고 나머지 절을 결과 집합의 열로 반환합니다.
언급URL : https://stackoverflow.com/questions/5686271/selecting-multiple-columns-fields-in-mysql-subquery
'programing' 카테고리의 다른 글
mysql_config가 없는 MariaDB C 커넥터 (0) | 2022.10.18 |
---|---|
PHP 7 RC3: 누락된 MySQL PDO를 설치하는 방법 (0) | 2022.10.18 |
MySQL INTO OUTFILE이 기존 파일을 덮어쓰시겠습니까? (0) | 2022.10.18 |
Gson이 value=map 엔트리를 무시합니다. (0) | 2022.10.18 |
php 날짜를 mysql 형식으로 변환 (0) | 2022.10.18 |