sql >> Databasteknik >  >> RDS >> Mysql

MySQL enda uttalande för att slå samman två tabeller

Du kan göra detta med en join och en group by :

select u.*, firstname, lastname
from user u join
     (select uf.user_id,
             max(case when key = 'firstname' then value end) as firstname,
             max(case when key = 'lastname' then value end) as lastname
      from user_field uf
      group by user_id
     ) uf
     on uf.user_id = u.id;

Du kan också göra detta med en sekvens av joins:

select u.*. firstname.value, lastname.value
from user u join
     user_field firstname
     on u.id = firstname.user_id and firstname.key = 'firstname' join
     user_field lastname
     on u.id = lastname.user_id and lastname.key = 'lastname';

Ditt resultat verkar begränsa detta till bara ett användar-ID. Du kanske vill ha en where klausul med detta filter.



  1. =) Operatör för nybörjare

  2. Perl DBI fetchall_hashref

  3. Använda RStudio med en icke-systemversion av unixODBC Driver Manager

  4. Räkna förekomster av en understräng i en MySQL-kolumn