[SQL] 개별 행을 모든 행을 계산 대신 계산 SQL
SQL개별 행을 모든 행을 계산 대신 계산 SQL
나는 데이터베이스에서 데이터를 요청하는 SQL 문을 가지고있다.
SELECT `ID`, `To`, `Poster`, `Content`, `Time`, ifnull(`Aura`,0) as `Aura` FROM (
SELECT * FROM (
SELECT DISTINCT * FROM messages m
INNER JOIN
(
SELECT Friend2 as Friend FROM friends WHERE Friend1 = '1'
UNION ALL
SELECT Friend1 as Friend FROM friends WHERE Friend2 = '1'
) friends ON m.Poster = friends.`Friend`
UNION ALL SELECT DISTINCT *, '1' FROM messages where `Poster`='1'
) var
LEFT JOIN
(
select `ID` as `AuraID`, `Status` as `AuraStatus`, count(*) as `Aura`
from messages_aura
) aura ON (var.Poster = aura.AuraID AND var.ID = aura.AuraStatus)
) final
GROUP BY `ID`, `Poster`
ORDER BY `Time` DESC LIMIT 10
여기 내 messages_aura 테이블 레이아웃입니다. 그것은 ID, 상태 및 사용자 ID를 보여줍니다.
여기에 위의 진술의 출력이다.
(상기 스크린에서 ID 아래 포스터를 참조하여, 상기 화면의 상태는 다음 ID로 지칭)
성명은 맨 아래 행 1의 오라 수와 상단 행 잘못 무엇 2의 오라 수를 제공해야합니까?
해결법
-
==============================
1.당신은 GROUP BY 대신에 약간의 열을 기준으로 그룹화 그래서 그것의 계수 모든 것을 놓치고있어.
당신은 GROUP BY 대신에 약간의 열을 기준으로 그룹화 그래서 그것의 계수 모든 것을 놓치고있어.
LEFT JOIN ( select `ID` as `AuraID`, `Status` as `AuraStatus`, count(*) as `Aura` from messages_aura GROUP BY AuraID, AuraStatus ) aura ON (var.Poster = aura.AuraID AND var.ID = aura.AuraStatus)
from https://stackoverflow.com/questions/24562925/sql-counting-all-rows-instead-of-counting-individual-rows by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 빠르고 간단한 쿼리보다보기인가? (0) | 2020.03.18 |
---|---|
[SQL] 두 LEFT의 GROUP_CONCAT에서 이상한 중복 동작은 GROUP_BYs의 조인 (0) | 2020.03.18 |
[SQL] CONCATENATE 행은 T-SQL 값 (0) | 2020.03.18 |
[SQL] HOURS-00904 : 잘못된 식별자 (0) | 2020.03.17 |
[SQL] SQL NOT IN이 작동하지 않습니다 (0) | 2020.03.17 |