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

Složitý MySQL dotaz

Můžete udělat něco takového:

SELECT 
    t1.post_id, 
    t1.meta_value AS name, 
    t2.meta_value AS season, 
    t3.meta_value AS episode
FROM
    (
    SELECT *
    FROM the_table
    WHERE meta_key = 'name'
    ) t1
INNER JOIN
    (
    SELECT *
    FROM the_table
    WHERE meta_key = 'season'
    ) t2 ON t1.post_id = t2.post_id
INNER JOIN
    (
    SELECT *
    FROM the_table
    WHERE meta_key = 'episode'
    ) t3 ON t1.post_id = t3.post_id

Toto vám dá výsledek:

| post_id | name       | season | episode |
-------------------------------------------
|    1    | Smallville | 1      | 1       |
|    2    | Smallville | 1      | 2       |

V této podobě je mnohem jednodušší jakékoli operace.

Co potřebujete, je přidat:

WHERE name = 'Smallville'
ORDER BY season, episode


  1. Co si naši zákazníci zaslouží:Představujeme podnikovou dokumentaci MariaDB

  2. Jak vytvořit tabulku pomocí GUI v SQL Server - SQL Server / Výukový program T-SQL, část 37

  3. výpočet celkové doby přihlášení a odhlášení konkrétního uživatele v mysql

  4. Proč PDO vytiskne moje heslo, když se připojení nezdaří?