为什么分组依据和排序依据给出 0 响应

Why does group by and sort by give 0 response

这个查询的结果给了我 0 行,它应该给我最新的 3 行(按 Table1.Name 分组)。 表 1 有:"Name"、"Timestamp"、"Voltage"。 表 2 有:"Name", "data".

当我删除 "ORDER BY Table1.Timestamp" 时,我确实得到了 3 行(如预期的那样),但它们是数据库中最旧的 3 个条目,而我想要 3 个最新的条目。 (我在表 1 和表 2 中有 3 个匹配的名称值)。

代码:

SELECT * from Table1
INNER JOIN Table2
ON Table1.Name=Table2.Name
GROUP BY Table1.Name
ORDER BY Table1.Timestamp;

您可以尝试执行这样的查询:

SELECT t.*,t2.* from Table1 t
INNER JOIN Table2 t2
ON t.Name=t2.Name
WHERE t.Timestamp = (
    SELECT MAX(t3.Timestamp) FROM Table1 t3
    WHERE t3.Name = t.Name
)

您可以排序并取前 3 名:

SELECT * from Table1
INNER JOIN Table2
ON Table1.Name=Table2.Name
ORDER BY Table1.Timestamp DESC
LIMIT 3

当您使用连接两个或多个表时,请不要在 select 查询中使用 *。使用特定的列名来避免在 select 查询中出现歧义的列,您也可以使用 Table1.、Table2. 但在 select 查询中使用特定列的好方法。

SELECT Table1.Name,Table1.Timestamp 来自表 1 内连接表 2 开启 Table1.Name=Table2.Name 分组 Table1.Name 按 Table1.Timestamp;

排序