Mysql在不同的行和列中选择相同的值

Mysql在不同的行和列中选择相同的值,mysql,sql,Mysql,Sql,我想选择旧的和新的id中具有相同值的行,因此我的选择应该返回示例中的第1行和第4行 new_id old_id 000 333 111 666 222

我想选择旧的和新的id中具有相同值的行,因此我的选择应该返回示例中的第1行和第4行

         new_id                                          old_id
         000                                              333
         111                                              666
         222                                              555
         333                                              777
我有这个查询,但它不起作用,它只返回所有记录

试试下面的逻辑-

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

我只想使用
exists

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

特别是,这可以利用
(旧id)
(新id)
上的索引。有了这些索引,这应该是最快的解决方案。

在您的示例中,我看不出旧id和新id的值有多相同<代码>从表中选择*,其中旧\u id=新\u id是满足问题最低可理解部分的简单答案。一个适当的最小表声明和与该样本数据匹配的样本数据的预期结果将使此易于理解。欢迎来到SO。
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
             ) ;