2017-04-19 22 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 
相關問題