반응형
다음은 MySQL입니다.
SELECT a.id,
a.name,
a.n,
a.r,
a.pot,
a.ticket_price,
a.starting_tickets,
a.started,
a.end,
COUNT(b.id) tickets_bought
FROM current_lotteries a
JOIN lottery_tickets b ON b.lid=a.id
WHERE a.cid=1
ORDER BY started DESC LIMIT 1
검색에서 a
에 행이 없지만 b
에 행이있는 경우 (예 : COUNT (b.id)
는 NULL
)이 쿼리는 a
필드에 대한 NULL
값과 COUNT (b.id)
를 구매 한 티켓
으로 표시합니다. a
테이블에 결과가없는 경우 행 ( num_rows = 0
)을 반환하지 않도록이 쿼리를 수정하려면 어떻게해야합니까?
스냅.
해결 방법
GROUP BY
절이 없으면 MySQL (다른 RDBMS에서 오류가 발생할 경우이를 허용 함)은 그룹화해야 할 때 b
의 모든 행에 집계 그룹을 적용합니다. 그들. GROUP BY a.id
추가
SELECT a.id,
a.name,
a.n,
a.r,
a.pot,
a.ticket_price,
a.starting_tickets,
a.started,
a.end,
COUNT(b.id) tickets_bought
FROM current_lotteries a
JOIN lottery_tickets b ON b.lid=a.id
WHERE a.cid=1
GROUP BY a.id
ORDER BY started DESC LIMIT 1
위의 내용은 MySQL에서 작동하지만 다른 곳에서는 작동하지 않습니다. 더 이식 가능한 버전은 상관 하위 쿼리를 사용합니다.
SELECT a.id,
a.name,
a.n,
a.r,
a.pot,
a.ticket_price,
a.starting_tickets,
a.started,
a.end,
b.tickets_bought
FROM current_lotteries a
/* More portable to join against a subquery which returns the count per group */
JOIN (
SELECT b.lid, COUNT(*) AS tickets_bought
FROM lottery_tickets
GROUP BY lid
) b ON a.id = b.lid
WHERE a.cid = 1
ORDER BY started DESC LIMIT 1
참조 페이지 https://stackoverflow.com/questions/14182609
반응형
'MySql' 카테고리의 다른 글
MySQL SQL Select 문 제한 및 설명 순서 (0) | 2021.01.14 |
---|---|
MySQL mysql에서 마지막으로 삽입 된 자동 증가 ID 가져 오기 (0) | 2021.01.14 |
MySQL mysql을 사용하여 SQL Server에 연결할 수 있습니까? (0) | 2021.01.14 |
MySQL mysql updating last inserted id (0) | 2021.01.14 |
MySQL How to calculate aggregate function SUM on an alias column? (0) | 2021.01.14 |
댓글