3

我有一个带有列的表“位置”:

编号 | session_id | 关键字 ID | 位置

以及其中的一些行:

  • session_id = 1 的 10 行
  • 和 session_id = 2 的 10 个。

作为查询的结果,我需要一个这样的表:

编号 | 关键字 ID | 位置1 | 位置2

其中,“position1”是具有 session_id = 1 值的列,“position2”是具有 session_id = 2 值的列。

结果集应包含 10 条记录。

对不起,我的英语不好。

数据示例:

id  | session_id | keyword_id | position
1   | 1          | 1          | 2
2   | 1          | 2          | 3
3   | 1          | 3          | 0
4   | 1          | 4          | 18
5   | 2          | 5          | 9
6   | 2          | 1          | 0
7   | 2          | 2          | 14
8   | 2          | 3          | 2
9   | 2          | 4          | 8
10  | 2          | 5          | 19
4

1 回答 1

4

假设您希望将两个会话中具有相同 id 的职位组合起来,那么以下查询应该可以解决问题:

SELECT T1.keyword_id
     , T1.position as Position1
     , T2.position as Position2
  FROM positions T1
       INNER JOIN positions T2
               ON T1.keyword_id = T2.keyword_id  -- this will match positions by [keyword_id]
              AND T1.session_id = 1 
              AND T2.session_id = 2
于 2012-12-25T19:15:45.173 回答