我正在尝试进行常规连接,但是使用where子句从history_items表中选择最新的条目。
'wb'
我选择Max(i.timestamp) - 这仍然没有返回history_items表中的最新条目。
答案 0 :(得分:1)
我认为你的问题在这里:
WHERE i.timestamp = (SELECT Max(i.timestamp)
FROM history_items)
i
不应该在那里,它应该是Max(timestamp)
而不是Max(i.timestamp)
。
Else Mysql将真正选择i.timestamp
行的值。因此,如果您的时间戳为1
,则会对此进行评估:
WHERE 1 =(SELECT Max(1) FROM hsitory_items)
基本上将是
WHERE i.timestamp = i.timestamp
我打赌你现在明白了。这就是返回所有行的原因。
答案 1 :(得分:0)
由于您总是按timestamp
排序ORDER BY h.timestamp DESC
,因此您实际上根本不需要以下WHERE
条件。另外,下面指出的代码中的子查询错误地引用了列,如其他答案中已经提到的那样
WHERE i.timestamp = (SELECT Max(i.timestamp)
FROM history_items)