某城市开了一家新的电影院,吸引了很多人过来看电影。该电影院特别注意用户体验,专门有个 LED显示板做电影推荐,上面公布着影评和相关电影描述。
作为该电影院的信息部主管,您需要编写一个 SQL查询,找出所有影片描述为非 boring (不无聊) 的并且 id 为奇数 的影片,结果请按等级 rating 排列。
例如,下表 cinema:
+---------+-----------+--------------+-----------+
| id | movie | description | rating |
+---------+-----------+--------------+-----------+
| 1 | War | great 3D | 8.9 |
| 2 | Science | fiction | 8.5 |
| 3 | irish | boring | 6.2 |
| 4 | Ice song | Fantacy | 8.6 |
| 5 | House card| Interesting| 9.1 |
+---------+-----------+--------------+-----------+
对于上面的例子,则正确的输出是为:
+---------+-----------+--------------+-----------+
| id | movie | description | rating |
+---------+-----------+--------------+-----------+
| 5 | House card| Interesting| 9.1 |
| 1 | War | great 3D | 8.9 |
+---------+-----------+--------------+-----------+
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/not-boring-movies
方法一:
select id, movie, description, rating
from cinema
where round(id/2) > (id/2)
and description <> "boring"
order by rating desc;
方法二:
select id, movie, description, rating
from cinema
where mod(id,2) = 1
and description != "boring"
order by rating desc;
方法三:
select id, movie, description, rating
from cinema
where id%2 = 1
and description != "boring"
order by rating desc;
SQL中“<>” 和 “!=” 都表示“不等于”,但推荐用<>,因为ANSI标准中是用<>。
使用"%"取余符号和mod()结果一样,不过mod()效率更高。
mod函数百是一个求余函数,其格式为: mod(nExp1,nExp2),即是两个数值表达式作除法运算(nExp1/nExp2)后的余数。
示例:
MOD(3, 2) 等于 1
MOD(-3, 2) 等于1
MOD(3, -2) 等于-1
MOD(-3, -2) 等于-1
MOD(-3, 0) 等于-3
MOD(3, 0) 等于3
MOD(2, 0) 等于2
MOD(4, 3) 等于1