sql >> Databáze >  >> RDS >> Mysql

MySQL obsahuje nula řádků při použití COUNT s GROUP BY

Budete muset použít LEFT JOIN namísto INNER JOIN . Začněte výběrem všech typů voucherů a poté doleva spojení, abyste našli počet.

SELECT
  voucher_types.id AS voucher_type,
  IFNULL(vouchers_count.vouchers_remaining, 0) AS vouchers_remaining
FROM
  voucher_types
LEFT JOIN
  (
    SELECT
    v.type_id AS voucher_type,
    COUNT(v.id) AS vouchers_remaining
    FROM
    vouchers v
    WHERE
    v.sold = 0
    GROUP BY v.type_id
  ) AS vouchers_count
  ON vouchers_count.voucher_type = voucher_types.id


  1. nastavení cílové verze databáze pro migraci pracovního stolu mysql

  2. Funkce LEAST() v PostgreSQL

  3. Jak formátovat záporné hodnoty pomocí závorek na serveru SQL Server (T-SQL)

  4. PostgreSQL smaže veškerý obsah