sql >> Database teknologi >  >> RDS >> Mysql

MYSQL:Sammenføj liste over værdier i en tabel

I MySQL kan du konstruere tabellen ved hjælp af union all :

select m.mode, SUM(p.amount)
from (select 'Cash' as mode union all
      select 'Card' union all
      select 'Cheque' union all
      select 'Bank'
     ) m left join
     payments p
     on m.mode = p.mode
group by m.mode;

Bemærkninger:

  • Jeg har ændret name til mode så kolonnen med samme information har samme navn.
  • group by nøglen skal være fra den første navn, ikke det andet (det er m.mode i stedet for p.mode ).
  • Hvis du vil have 0 i stedet for NULL , og brug derefter coalesce(sum(p.amount), 0) .
  • Du vil måske overveje en referencetabel, der indeholder tilstandsværdierne.



  1. Sådan transponeres rækker til kolonner dynamisk i MySQL

  2. Er der nogen fordel ved at oprette og indeksere en primærnøgle?

  3. MYSQL join-resultater sæt slettede resultater under IN () i hvor-klausul?

  4. Hvordan fjerner man HTML-tags fra en streng i SQL Server?