2017-04-19 83 views
0

我有一个表(MyTable)与此;MySql查询2列中相同值的行

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和 在上述我需要的行1,3,5,7返回值2行。

如果可能的话按日期排序,值2

+1

匹配值1和值2?在你预期的结果是不正确的。 –

+0

对不起,在“返回”这个词之前有拼写错误。行1和5在值1和值2中具有匹配的值。行3和7在值1和值2中具有匹配的值。需要返回所有这些行。 – user2568374

回答

1

试试这个:

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 
+0

返回第3和第7行,但不是第1和第5 ..如果我有这个正确的。等等,仔细检查,这可能是正确的。 – user2568374

+0

是的,就像我的例子那样,我的db没有2套。这是非常棘手的,我认为这样= =而不是<>也可以工作:https://dba.stackexchange.com/questions/72211/matching-two-rows-in-a-single-table-如果两特定的密钥具备的,不同的值 – user2568374

-2

只需添加 '去哪儿' 条款与 'VALUE1' IS NOT NULL和 '值' IS NOT NULL

+0

返回第6行,该行没有与另一行匹配 –

+0

没有得到任何结果。真正的第4行和第6行不需要返回。 – user2568374

0

不同与格式输出连接:

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 
相关问题