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

Как да намеря комбинации от редове>колони с Cross Join? [SQL]

Можете да използвате cross join и филтриране:

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;

Можете да обобщите това с помощта на рекурсивен 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);

Тук е db<>цигулка.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tomcat 7.0.42 обединяване, hibernate 4.2, mysql rock solid autoreconnect решение

  2. Създател на заявки на Laravel - повторна употреба на заявка с изменен израз where

  3. Не мога да инсталирам mysql gem на Mac OS X

  4. Удостоверете се като конкретен потребител в MySQL

  5. MySQL:Използвайте стойността CASE/ELSE като параметър за присъединяване