MySQL不正确的输出不确定查询有什么问题

时间:2013-04-08 15:52:11

标签: mysql

尝试编写并执行MySQL查询,以显示所有动作或喜剧电影且成本低于50美元的电影的电影号码,电影片名,电影费用和电影类型。按类型按升序对结果进行排序。

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)

4 个答案:

答案 0 :(得分: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 :(得分: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

答案 2 :(得分: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')

无论您喜欢哪种方式,都符合您的需求。

答案 3 :(得分: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;