2013-04-08 42 views
1

試圖編寫和執行一個MySQL查詢來顯示電影號碼,電影標題,電影成本和電影流派的所有電影是行動或喜劇電影,並有一個成本低於50美元。按類型對結果按升序排序。MySQL不正確的輸出不知道什麼是錯誤的查詢

mysql> select mv_no, mv_name, mv_cost, mv_genre from movie  
    -> where mv_genre = ('Action' or 'Comedy') and mv_cost < 50  
    -> order by mv_genre; 

+-------+----------------------------+---------+----------+ 
| mv_no | mv_name     | mv_cost | mv_genre |  
+-------+----------------------------+---------+----------+  
| 1245 | Time to Burn    | 45.49 | ACTION |  
| 1237 | Beatnik Fever    | 29.95 | COMEDY |  
| 1239 | Where Hope Dies   | 25.49 | DRAMA |  
| 1234 | The Cesar Family Christmas | 39.95 | FAMILY |  
+-------+----------------------------+---------+----------+ 
4 rows in set, 10 warnings (0.00 sec) 
+2

它不是想表現出戲劇或電影家庭 – Daniel 2013-04-08 15:57:49

回答

0

假如你試圖使用IN條款:

select mv_no, mv_name, mv_cost, mv_genre 
from movie 
where mv_genre in ('Action', 'Comedy') 
    and mv_cost < 50 

SQL Fiddle with Demo

或者你可以改變你使用的是OR條款的方式:

select mv_no, mv_name, mv_cost, mv_genre 
from movie 
where (mv_genre = 'Action' or mv_genre= 'Comedy') 
    and mv_cost < 50 
+0

這就是我要推薦一下。在原文中使用'OR'是錯誤的。 – 2013-04-08 15:55:45

1

變化到:

select mv_no, mv_name, mv_cost, mv_genre from movie 

where (mv_genre = 'Action' or mv_genre = 'Comedy') and mv_cost < 50 

order by mv_genre; 
+1

像魅力一樣工作,謝謝先生。 – Daniel 2013-04-08 15:59:26

0

的錯誤似乎是你的磨損子句中,你可以使用一個IN,如:

WHERE mv_genre IN ('Action', 'Comedy') 

您當前的mv_genre = ('Action' or 'Comedy')條款不計算到if the genre is 'Action' or the genre is 'Comedy'它實際上只是意味着你要評估是否'Action' OR 'Comedy'是真的,然後比較結果mv_genre這將永遠不會返回您所期望的。您可以輕鬆地使用IN多個值,然後比較列表或者你能更詳細和比較喜歡:

WHERE (mv_genre = 'Action' OR mv_genre = 'Comedy') 

無論你喜歡和適合您的需要。

0

您的查詢應該是

mysql> select mv_no, mv_name, mv_cost, mv_genre from movie 
    -> where mv_genre IN ('Action', 'Comedy') and mv_cost < 50 
    -> order by mv_genre; 
相關問題