Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak znaleźć kombinacje wierszy>kolumn za pomocą Cross Join? [SQL]

Możesz użyć cross join i filtrowanie:

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;

Możesz to uogólnić za pomocą rekurencyjnego 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);

Tu to db<>skrzypce.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przetwarzaj klauzulę SELECT zapytań SQL do tablicy PHP

  2. Prosta, ale ciężka aplikacja zużywająca dużo zasobów. Jak optymalizować?

  3. Jak wyłączyć pamięć podręczną zapytań MySQL podczas korzystania z SQLAlchemy?

  4. Jak zmienić numer początkowy zamówienia w Magento?

  5. Wysyłanie powiadomienia Firesbase do wielu użytkowników