我有时间戳到“PART_EPOCH”列,表名是“crud_mysqli”
以下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()))
";
答案 0 :(得分:1)
WHERE (PART_EPOCH = (SELECT MIN(PART_EPOCH) FROM crud_mysqli))
这里你要说的是只采用时间戳最低的条目,这可能是过去的事情。
AND (PART_EPOCH > UNIX_TIMESTAMP(NOW()))
在这里,你说,它应该在未来。如果您将来有任何带有时间戳的条目,则这两个条件相互排斥。
所以你需要将第二个条件放入子查询中:
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
如果您有两个具有相同时间戳的条目,则结果只会有所不同。在这种情况下,第一个查询将返回它们 - 第二个查询只返回一个。