2016-09-30 94 views
1

PostgreSQL新手在這裏。我有一個看起來像這樣的數據:如何根據另一列「鍵控」的值進行選擇?

+-----------+---------+-------+ 
| StudentID | ClassID | Grade | 
+-----------+---------+-------+ 
|  19927 | A13  |  5 | 
|  19927 | A07  |  3 | 
|  19927 | B22  |  7 | 
|  10001 | A13  |  2 | 
|  10001 | A07  |  8 | 
|  22207 | A13  |  7 | 
|  22207 | A07  | 10 | 
|  22207 | C80  |  2 | 
|  27516 | A07  |  8 | 
+-----------+---------+-------+ 

我試圖選擇具有類A13更高檔次比A07級所有學生。這意味着只包括兩個班級都有成績的學生。

這樣做的最好方法是什麼?已經長大的塔塔,我通常會嘗試:

  1. 只選擇其中的classID = A07或A13
  2. 重塑寬
  3. 行選擇在使用上A13> A07
where子句

但我覺得這很像非SQL。

回答

1

PostgreSQL給大量的做這件事的方式不同,這裏有一個

SELECT a13.* FROM 
    (SELECT * FROM table1 where classid='A13') as a13 
INNER JOIN 
    (SELECT * FROM table1 where classid='A07') as a07 
ON a13.grade > a07.grade 
相關問題