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

Каква заявка бих използвал, за да получа братски записи, когато използвам затварящи таблици?

Братята и сестрите на даден възел ще имат един и същ предшественик. Това обаче ще включва „1“, както и вашия списък:

select t.*
from table t 
where t.ancestor = (select ancestor from table t2 where t.id = 2);

Във вашата таблица не съм сигурен какво означава за ancestor да бъде същият като descendant . Но мисля, че следното е заявката, която искате:

select t.*
from table t 
where t.ancestor = (select ancestor from table t2 where t2.id = 2) and
      t.ancestor <> t.descendant and
      t.id <> 2;

РЕДАКТИРАНЕ:

Можете да направите това като явно присъединете се така:

select t.*
from table t join
     table t2
     on t.ancestor = t2.ancestor and
        t2.id = 2 a
where t.id <> 2 and
      t.ancestor <> t.descendant;

Забележка:Добавих и условието t.id <> 2 така че "2" не се счита за брат на себе си.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да инсталирате MySQL 8 на Ubuntu

  2. Как да съпоставя и сортирам по сходство в MySQL?

  3. Грешка в mysql:Таблицата mysql.innodb_table_stats не е намерена

  4. Как да синхронизирам повторно Mysql DB, ако главен и подчинен имат различен корпус на база данни на Mysql репликация?

  5. Как да използвате jQuery SlickGrid с PHP / MySQL (зареждане на сървърни данни и запазване на промените)