如何在MySQL中使用一个选择查询在两个列之间切换值?

时间:2019-02-01 20:12:30

标签: mysql sql

这表示涉及Bob的两对之间的交换表:

     Pair1      pair2        exchanges  
     Bob        Alice        12
     Jack       Bob          6  
     Max        Bob          22
     Bob        Steve        100

想法是使用选择查询使Bob仅出现在pair1或pair2上,输出应如下所示:

     Pair1      pair2        exchanges
     Bob        Alice        12
     Bob        Jack          6  
     Bob        Max          22
     Bob        Steve        100

2 个答案:

答案 0 :(得分:1)

这应该做您想要的:

SELECT
    'Bob' AS pair1,
    CASE 
        WHEN pair1 = 'Bob' THEN pair2
        ELSE pair1
    END AS pair2,
    exchanges
FROM mytable
WHERE pair1 = 'Bob' OR pair2 = 'Bob'

查询使用CASE构造选择revelvant列。

答案 1 :(得分:0)

GMB的答案可能表现更好。但是,从逻辑的角度来看,我在思考:

select pair1, pair2, exchanges
from t
where pair1 = 'Bob'
union all
select pair2, pair1, exchanges
from t
where pair2 = 'Bob'