如何从两个不同的列中选择满足条件的行

时间:2019-10-10 02:30:09

标签: mysql sql

我有一张称为歌曲的小桌子(8行),我需要选择所有少于3分钟46秒的歌曲的标题和长度。歌曲最长可以是3分45秒。

Songs table image

我以前尝试过:

SELECT title, length FROM songs WHERE minutes <= 3 AND seconds < 46;

但是此命令省略了标题为《一种魔法》的歌曲,该歌曲长度为2分59秒。

我认为此SELECT查询可能需要一个CASE表达式,但无法弄清楚如何使其正常工作而不会出错。

2 个答案:

答案 0 :(得分:1)

这是您的查询。只需将您的分钟数转换为seconds

SELECT title, length FROM songs WHERE ((minutes * 60) + seconds) <= (3 * 60) + 46;

SELECT title, length FROM songs WHERE ((minutes * 60) + seconds) <= 240; --in seconds

答案 1 :(得分:0)

您的查询未找到该歌曲,因为它的“ seconds”列的值为59,该值大于46,从而使第二个条件为假。

数据库无法理解“分钟”和“秒”之间的关系,因此您必须通过

之类的命令来明确定义该关系。
SELECT title, length
FROM songs
WHERE ((minutes * 60) + seconds) < 226;