Mysql выбрать одинаковые значения в разных строках и разных столбцах - PullRequest
0 голосов
/ 15 апреля 2020
         new_id                                          old_id
         000                                              333
         111                                              666
         222                                              555
         333                                              777

Я хочу выбрать строки с одинаковыми значениями в old_id и new_id, поэтому мой выбор должен вернуть строки 1 и 4 из примера

SELECT *
 FROM `table` AS `t`
      INNER JOIN ( SELECT * FROM `table`  ) as `old`
      ON `old`.`old_id` = `t`.`new_id`

У меня есть этот запрос, но он не работать он просто возвращает все записи

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Я бы просто использовал exists:

select t.*
from t
where exists (select 1
              from t t2
              where t2.new_id = t.old_id
             ) or
      exists (select 1
              from t t2
              where t2.old_id = t.new_id
             ) ;

В частности, это может использовать преимущества индексов (old_id) и (new_id). С этими индексами это должно быть самое быстрое решение.

1 голос
/ 15 апреля 2020

Попробуйте это ниже логи c -

SELECT DISTINCT C.* FROM 
(
    SELECT A.new_id
    FROM your_table A
    INNER JOIN your_table B ON A.new_id = B.Old_id
)A
INNER JOIN your_table C 
ON A.new_id = C.new_id
OR A.new_id = C.old_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...