Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL Query INNER GABUNG dengan alias

Untuk kasus ini, Anda dapat melakukannya seperti ini;) Hanya pivot tabel sederhana.

select
    users.id,
    users.slug,
    users.name,
    max(if(users_info.info_key = 'email', users_info.info_val, null)) as email,
    max(if(users_info.info_key = 'age', users_info.info_val, null)) as age
from users
inner join users_info
on users.id = users_info.parent
group by users.id

SQLFiddle DEMO DI SINI

Jika Anda memiliki info_key dinamis , Anda memerlukan sql dinamis untuk melakukan ini, berikut saya berikan contohnya.

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(if(users_info.info_key = ''',
      users_info.info_key,
      ''', users_info.info_val, null)) as ',
      users_info.info_key
    )
  ) INTO @sql
FROM users
inner join users_info
on users.id = users_info.parent
;

SET @sql = CONCAT('select users.id, users.slug, users.name, ', @sql, ' FROM users
inner join users_info group by users.id having email = \'[email protected]\'');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

SQLFiddle DEMO DI SINI



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa memetakan tanggal Java ke DATETIME di mysql (secara default TIMESTAMP-nya) dengan anotasi Hibernate

  2. Secara efisien mendapatkan jumlah baris yang dikembalikan dari kueri SELECT dengan klausa WHERE menggunakan PDO

  3. Tampilkan semua kunci saat ini dari get_lock

  4. SQLite meningkatkan efisiensi kueri

  5. Pengecualian PHP PDO + Peringatan di MySQL Telah Hilang?