mysql - 选择了多少行?

标签 mysql if-statement

我有一个这样的表:

// mytable
+----+-----------------+
| id |    timestamp    |
+----+-----------------+
| 1  | 1452001861      |    -- yesterday
| 2  | 1452088272      |    -- today
| 3  | 1452088283      |    -- today
| 4  | 1451915461      |    -- last week
| 5  | 1452001861      |    -- yesterday
| 6  | 1452088263      |    -- today
| 7  | 1252388263      |    -- out of {today, yesterday, last week}
| 8  | 1452088312      |    -- today
| 9  | 1452001762      |    -- yesterday
| 10 | 1222388263      |    -- out of {today, yesterday, last week}
| 12 | 1451915459      |    -- last week
+----+-----------------+

这是我的查询:

SELECT * FROM mytable 
   WHERE DATE(FROM_UNIXTIME(timestamp)) >= CURDATE() - INTERVAL 7 DAY
   ORDER BY timestamp DESC

上述查询选择从现在到过去 7 天之间的所有行。

<小时/>

现在有时所有行都在最后 7 天之前(我的意思是最新的行是在最后 8 天添加的),然后该查询的输出将是什么(选择 0 行) 。

我想要的是,如果没有选择任何行(0 行),则选择最后 5 行(之前添加的)。我该怎么做?

最佳答案

您可以尝试这种方法:

SET @row_count := (SELECT COUNT(*) 
                   FROM mytable 
                   WHERE DATE(FROM_UNIXTIME(timestamp)) >= CURDATE() - INTERVAL 7 DAY);

IF (@row_count > 0) THEN
    SELECT * 
    FROM mytable 
    WHERE DATE(FROM_UNIXTIME(timestamp)) >= CURDATE() - INTERVAL 7 DAY
    ORDER BY timestamp DESC;
ELSE
    SELECT * 
    FROM mytable 
    ORDER BY timestamp DESC
    LIMIT 5;
END IF;

关于mysql - 选择了多少行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34640301/

相关文章:

python - 非常基本的闹钟打不开网页浏览器

mysql - 根据最后一行过滤数据 mysql

mysql - 创建表的 SQL 语法问题

mysql - 实体管理器超时

php - MySQL LEFT OUTER JOIN 未给出正确的结果

mysql - 解析 MySQL Historian 格式

java - 我必须为一个程序编写两个方法,当用户提示宽度和高度时计算矩形的面积和周长?

java - 是否可以检查 char 是否匹配可能性列表?

python - 检查函数是否在 Python 中返回 false

python - 关于在我的代码中更快地执行 for/if 语句的建议?