MySql查询两列中具有相同值的行

MySql查询两列中具有相同值的行,mysql,Mysql,我有一张桌子,我的桌子上有这个 id date value1 value2 1 2016-09-16 1 null 2 2016-09-16 null null 3 2016-09-16 3 null 4 2017-01-16 2 null 5 2017-01-16 null 1 6 2017-01-16

我有一张桌子,我的桌子上有这个

 id   date        value1   value2
    1    2016-09-16    1       null
    2    2016-09-16    null    null
    3    2016-09-16    3       null
    4    2017-01-16    2       null
    5    2017-01-16    null     1
    6    2017-01-16    null     34
    7    2017-01-16    null      3
需要它返回在value1和value2中具有匹配值的行 在上面,我需要返回第1、3、5、7行


如果可能,按日期排序,value2只需添加带有value1的Where子句不为空,value2不为空,尝试以下操作:

select 
    *
from
    my_table t
where
    t.value1 in
        (select value2 from my_table)
or  
    t.value2 in
        (select value1 from my_table)
order by 
    t.date, t.value2

具有联接的不同格式输出:

SELECT
   myt.id as 'ID1',
   myt2.id as 'ID2',
   myt.value1 as 'Value1',
   myt2.value2 as 'Value2'
FROM
   MyTable as myt
      INNER JOIN MyTable as myt2
WHERE
   myt.value1 = myt2.value2
收益率:

ID1       ID2      Value1     Value2
1          5         1          1
3          7         3          3

匹配值1和值2?在您预期的结果中,这是不正确的。对不起,在返回单词之前出现了拼写错误,已修复。行1和行5在值1和值2中具有匹配的值。第3行和第7行在value1和value2中具有匹配的值。需要返回所有这些行。这将返回第6行,该行与另一行不匹配。获取与该行不匹配的结果。返回第3行和第7行,但不返回第1行和第5行..如果正确的话。等等,重复检查,这可能是正确的。是的,就是这样,我的数据库没有像我的示例那样有两套。这是相当棘手的,我在想这样的事情,而不是用=也可以工作: