在多列中查询相同的内容?

时间:2011-08-04 13:40:23

标签: mysql sql database

我有一张表,其中有成对的分数。

喜欢这个

P1    P2    Score   Date
John  Mark  43      2011-01-01
Sinan Ash   53      2011-02-03
...
John  Suzie 34      2011-10-10
Ash   Sinan 54      2011-11-11
sinan suzie 42      2011-12-12
...

所以我想要的是获得思南和他的搭档的所有分数。 我想要得到的东西是喜欢的东西:

partner - score
ash       53
ash       54
suzie     42

我正在尝试使用下面的te查询。有没有比

更好的查询方式
select * from table WHERE P1 = 'sinan' OR P2 = 'sinan'

效率这么高吗?也许有一种更好的方法来存储数据。 有什么建议吗?

2 个答案:

答案 0 :(得分:3)

真正的诀窍是在P1和P2之间交替伙伴。最简单的方法可能是:

SELECT P2 AS partner, Score
    FROM table
    WHERE P1 = 'sinan'
UNION ALL
SELECT P1 AS partner, Score
    FROM table
    WHERE P2 = 'sinan'

答案 1 :(得分:0)

以下是使用CASE语句的示例

SELECT CASE WHEN P1 = 'Sinan' THEN P2 ELSE P1 END AS Partner, Score
FROM ScoreTable
WHERE P1 = 'Sinan' OR P2 = 'Sinan'
相关问题