2017-01-07 26 views
2

MARKS獲取多時間比較結果的單獨列的值

STUDENT COL_SKILL COL_MARKS 
----------------------------- 
1  PHP   5 
1  SQL   3 
1  HTML  2 
1  CSS   2 
2  PHP   1 
2  SQL   1 
3  PHP   3 
3  HTML  2 
3  CSS   2 

我要得到我想要得到一個學生名單

SELECT STUDENT 
FROM MARKS 
WHERE SKILL = 'PHP' AND MARKS >= 3 

SELECT STUDENT 
FROM MARKS 
WHERE SKILL = 'HTML' AND MARKS >= 2 

結果查詢。

回答

1

您可以使用UNION ALL像:

SELECT STUDENT 
FROM MARKS 
WHERE SKILL='PHP' AND MARKS >=3 
    UNION ALL 
SELECT STUDENT 
FROM MARKS 
WHERE SKILL='HTML' AND MARKS >=2 

如果你想在學生列不同的值,使用UNION像:

SELECT STUDENT 
FROM MARKS 
WHERE SKILL='PHP' AND MARKS >=3 
    UNION 
SELECT STUDENT 
FROM MARKS 
WHERE SKILL='HTML' AND MARKS >=2 
1

使用OR條件

SELECT STUDENT FROM MARKS 
WHERE (SKILL='PHP' AND MARKS >=3) 
    OR (SKILL='HTML' AND MARKS >=2) 
+0

如果他寫道OR結果將是不正確。因爲學生必須通過繪圖分數的所有技能。它應該像'php> = 3和html> = 2'那樣。 –

1

相當於什麼你試圖做的是使用OR

SELECT STUDENT FROM MARKS 
WHERE (SKILL='PHP' AND MARKS >=3) 
    OR (SKILL='HTML' AND MARKS >=2) 

如果你想找到它在PHP 3或以上的水平,HTML 2個或多個標誌的學生,試試這個:

select student 
from marks 
group by student 
having count(skill = 'PHP' and marks >= 3) > 0 
and count(skill = 'HTML' and marks >= 2) > 0;