sql >> Database >  >> RDS >> Mysql

Hoe vind je rijen>kolommencombinaties met Cross Join? [SQL]

U kunt een cross join . gebruiken en filteren:

select t1.post_title, t2.post_title, t3.post_title
from t t1 cross join
     t t2 cross join
     t t3
where t1.category_id = 1 and
      t2.category_id = 2 and
      t3.category_id = 3;

U kunt dit generaliseren met behulp van een recursieve CTE:

with recursive tt as (
      select t.*, dense_rank() over (order by category_id) as cat_seqnum
      from t
     ),
     cte as (
      select cat_seqnum, post_title
      from tt
      where cat_seqnum = 1
      union all
      select  tt.cat_seqnum, concat_ws('-', cte.post_title, tt.post_title)
      from cte join
           tt
           on tt.cat_seqnum = cte.cat_seqnum + 1
     )
select *
from cte
where cat_seqnum = (select max(cat_seqnum) from tt);

Hier is een db<>viool.




  1. Geen geschikte driver gevonden voor jdbc:mysql netbeans, *.jar include in library

  2. Waarom invoegen-selecteren naar variabele tabel van XML-variabele zo traag?

  3. Hoe mysql-databasetabelgegevens in json te converteren met php

  4. Dubbele waarden vinden in MySQL