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

SELECT ze dvou tabulek založených na stejném id a seskupených

union by vyhovovalo vašemu problému. Je vyžadována určitá masáž dat, aby obě strany svazku měly stejný počet a typ sloupců:

select  group_id
,       id as item_id
,       name
,       description
,       source_table
from    (
        select  id
        ,       user_id
        ,       group_id
        ,       name
        ,       description
        ,       'from table1' source_table
        from    table1
        union all
        select  id
        ,       user_id
        ,       group_id
        ,       name
        ,       description
        ,       'from table2'  -- Column name is already defined above
        from    table2
        ) as SubQueriesMustBeNamed
where   user_id = 1
order by
        group_id
,       name

Příklad práce v SQL Fiddle.

Chcete-li sadu výsledků naformátovat, jak chcete, iterujte sadu výsledků. Když je group_id změny, vytiskněte # Group N # záhlaví.

Na straně klienta by nemělo být potřeba mít další smyčky nebo iterace, stačí jeden foreach nebo ekvivalent přes sadu řádků vrácených dotazem.



  1. Jak rychle VYBRAT 3 náhodné záznamy z 30k MySQL tabulky s filtrem kde pomocí jediného dotazu?

  2. Jak získat maximální hodnotu celého čísla typu sloupce uloženého jako text typu v tabulce sqlite

  3. Jak používat Hibernate eqOrIsNull()

  4. Odstraňte duplikáty pomocí funkce Oracle LISTAGG