我在“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/