在SQL中使用的正确方法是什么

时间:2019-02-12 07:22:31

标签: mysql sql database data-science

我正在研究leetcode中的“ Not Boring Movies”问题。 问题描述如下 “ X城市开设了一家新电影院,很多人都想去这家电影院。电影院还会发布一张海报,标明电影的等级和描述。 请编写一个SQL查询以输出带有奇数编号ID和非“无聊”描述的电影。按评分顺序对结果进行排序。“

例如,台式电影院

+---------+-----------+--------------+-----------+
|   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     |
+---------+-----------+--------------+-----------+

我的解决方法是:

SELECT id, movie ,description, rating 
FROM cinema
WHERE ID % 2 != 0 AND description NOT LIKE %boring%
ORDER BY rating DESC

此解决方案无法通过leetcode测试。

预期的解决方案是:

SELECT id, movie ,description, rating 
FROM cinema
WHERE id % 2 != 0  AND description != 'boring'
ORDER BY rating DESC

基本上,两种解决方案都遵循相同的思想来解决问题,但是我无法理解它们之间的区别。谁能告诉我为什么我的解决方案无法通过测试?

4 个答案:

答案 0 :(得分:1)

不接受答案,因为他们希望您过滤出描述完全“无聊”的行,而不要过滤出具有诸如“不无聊”或“只是有点无聊”之类的描述的行。您的查询将过滤掉所有三行。

答案 1 :(得分:0)

您应按喜欢使用('%boring%')

SELECT id, movie ,description, rating 
FROM cinema
WHERE ID % 2 != 0 AND description NOT LIKE '%boring%'
ORDER BY rating DESC

答案 2 :(得分:0)

问题描述清楚地指出了 ...不是“无聊”的描述。它不是说“不包含”,而是说“不是”

contain在sql中为LIKE,而is在sql中为=

答案 3 :(得分:0)

LIKE %boring%将选择

_boring!
...boring...

但是描述值只是“无聊”