MySQLI SELECT 具有用于纪元时间戳选择的多个子句

标签 mysql select

我在“PART_EPOCH”列中添加了纪元时间戳,表名称为“crud_mysqli”

  • 我想为下一个 FUTURE 时间戳选择关联的“PART_ID”值。 (避免研究过去的时间戳)

以下 MySQLI 查询应选择将来的 MIN(下一个)值:> 现在。

但它不会返回任何内容。 如果我单独声明子句,它确实返回预期返回, 如下组合子句不会返回任何结果。

您能告诉我这里出了什么问题吗:

    // Find next event PART_ID name :
    // SELECT lowest (next) PART_ID value in the future (do not select winthin past PART_EPOCH values)
    $query = "SELECT
    PART_ID
    FROM crud_mysqli
    WHERE (PART_EPOCH = (SELECT MIN(PART_EPOCH) FROM crud_mysqli))
    AND (PART_EPOCH > UNIX_TIMESTAMP(NOW()))
    ";

最佳答案

WHERE (PART_EPOCH = (SELECT MIN(PART_EPOCH) FROM crud_mysqli))

这里你说只获取时间戳最低的条目,这可能是过去的事情。

AND (PART_EPOCH > UNIX_TIMESTAMP(NOW()))

在这里你说,它应该是在未来。如果您有任何带有 future 时间戳的条目,则这两个条件相互排斥。

所以需要将第二个条件放入子查询中:

SELECT
PART_ID
FROM crud_mysqli
WHERE PART_EPOCH = (
    SELECT MIN(PART_EPOCH) 
    FROM crud_mysqli
    WHERE PART_EPOCH > UNIX_TIMESTAMP(NOW())
)

这意味着:“获取过去时间戳最低的条目”

但是..您也可以执行以下操作:

SELECT PART_ID
FROM crud_mysqli
WHERE PART_EPOCH > UNIX_TIMESTAMP(NOW())
ORDER BY PART_EPOCH ASC
LIMIT 1

仅当两个条目具有相同时间戳时,结果才会有所不同。在这种情况下,第一个查询将返回两者 - 第二个查询仅返回一个。

关于MySQLI SELECT 具有用于纪元时间戳选择的多个子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45313271/

相关文章:

mysql - 如何从 sql 转储文件升级 mariadb?

jquery - 选择不是当前元素/JQuery 父级的先前标题

MySQL - SELECT ...(子查询)AS 字段名

MySQLi SELECT 查询相关记录

mysql - 如何有条件地从两个表中选择一个字段?

mysql - 如何标记 MySQL 中的每个非重复行? (合并选择和更新语句)

mysql - 子查询问题

mysql - 以特定格式显示MYSQL结果

mysql - 使用 windows phone 7 使用 mySQL 数据库

mysql - MySQL 中的多行更新