반응형
하위 쿼리에서 열을 두 개 이상 선택할 수 없는 이유는 무엇입니까?
이 질문을 계속 해봤는데
SELECT
A.*,
(
SELECT
SUM(IF(LENGTH(B.picture) > 0, 1, 0)) AS A_picture_count,
SUM(IF(LENGTH(B.video) > 0, 1, 0)) AS A_video_count
FROM B
WHERE B.A_id = A.id
)
FROM A
이 질문에 대한 답은Operand should contain 1 column(s)
반면에.
SELECT
A.*,
(
SELECT
SUM(IF(LENGTH(B.picture) > 0, 1, 0)) AS A_picture_count
FROM B
WHERE B.A_id = A.id
)
FROM A
완벽하게 동작합니다.MariaDB는 왜 1컬럼 이상의 서브쿼리를 허용하지 않는가?내가 뭘 빼놓았나요?
이 질문(MySQL - Operand에는 1개의 열이 포함되어 있어야 합니다)에서 알 수 있듯이,
너는 아마 내가 이 길로 가야 한다고 대답할 것이다.
SELECT t1.*, sq.*
FROM table1 t1,
(SELECT a,b,c FROM table2 ...) sq
WHERE ...
또는 join을 사용합니다(하지만 제 질문은 훨씬 더 복잡하며 저의 많은 SUM과 Counts는 제 GROUP BY와 많은 문제를 일으킵니다).
제 질문은 '어떻게'보다는 '왜'에 관한 것입니다.
최종 솔루션(최적이 아님):
SELECT
A.*,
(
SELECT
SUM(IF(LENGTH(B.picture) > 0, 1, 0)) AS A_picture_count,
FROM B
WHERE B.A_id = A.id
)
(
SELECT
SUM(IF(LENGTH(B.video) > 0, 1, 0)) AS A_video_count
FROM B
WHERE B.A_id = A.id
)
FROM A
터무니없는 해킹은 두 값을 하나의 변수로 코드화하는 것입니다.어느 쪽도 1000을 넘을 수 없는 경우:
SELECT
A.*,
(
SELECT
1000 * SUM(IF(LENGTH(B.picture) > 0, 1, 0)) +
SUM(IF(LENGTH(B.video) > 0, 1, 0)) AS A_pv_count
FROM B
WHERE B.A_id = A.id
)
FROM A
/ 1000 및 % 1000을 사용하여 컴포넌트를 반환할 수 있습니다.
SELECT floor(A_pv_count / 1000) AS A_picture_count,
(A_pv_count % 1000) AS A_video_count
FROM
(SELECT
A.*,
(
SELECT
1000 * SUM(IF(LENGTH(B.picture) > 0, 1, 0)) +
SUM(IF(LENGTH(B.video) > 0, 1, 0)) AS A_pv_count
FROM B
WHERE B.A_id = A.id
)
FROM A) AS AW
[ IMO No Database ]에서 2개의 컬럼을 선택할 수 있습니다.( )
이런 거죠.할 수 없는 것은 분명하다select col1, (col2_ok), (multi_columns_HOW_ON_EARTH?)
하나의 솔루션에서는 다음과 같은 tmp 테이블을 사용해야 합니다(검색되지만 MariaDB는 지원하지 않음).cte
):
select A.*, tmp.A_picture_count, tmp.A_video_count
from A
inner join (SELECT A.id,
SUM(IF(LENGTH(B.picture) > 0, 1, 0)) AS A_picture_count,
SUM(IF(LENGTH(B.video) > 0, 1, 0)) AS A_video_count
FROM A
inner join B
on B.A_id = A.id
group by A.id
) tmp
on A.id = tmp.id;
언급URL : https://stackoverflow.com/questions/37139405/why-i-cant-select-more-than-one-column-in-my-subquery
반응형
'programing' 카테고리의 다른 글
사전 개체의 길이를 확인하는 중입니다. (0) | 2023.02.03 |
---|---|
MariaDB의 Qcache_hits와 Com_select가 함께 증가합니다. (0) | 2023.02.03 |
봄의 @Value 기본값으로 null을 설정할 수 있습니까? (0) | 2023.02.03 |
대기열 테이블에서 사용자 위치를 가져오는 데 너무 느립니다. (0) | 2023.01.24 |
MySQL에서 중복된 값 찾기 (0) | 2023.01.24 |