Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL Query INNER JOIN с псевдоними

В този случай можете да го направите по следния начин;) Просто обикновена опорна таблица.

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 ТУК

Ако имате динамичен info_key , ще ви трябва динамичен sql, за да направите това, тук ви давам пример.

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 ТУК



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Създаване на коментари за изгледи в mysql

  2. MySQL поле за присъединяване, разделено със запетая

  3. Планиране на събития и провеждане на събития през полунощ

  4. Примерна кука за филтриране за актуализиране на елемент със свързано поле

  5. INSERT SELECT заявка, когато една колона е уникална