gpt4 book ai didi

mysql - 在主 SELECT 之后使用 SELECT COUNT

转载 作者:行者123 更新时间:2023-11-29 02:10:54 25 4
gpt4 key购买 nike

假设我有 x 个站点。他们每 x 分钟向我发送一些值。现在我想读取每个站点的最后一个值

我现在拥有的是:

SELECT Umweltdaten.id,Umweltdaten.Temperatur,Umweltdaten.DatumZeit, Umweltdaten.gerateID
FROM Umweltdaten
LEFT JOIN Gerate ON Gerate.gerateID = Umweltdaten.gerateID
ORDER BY Umweltdaten.DatumZeit DESC

这里的问题是它给了我所有的值(value)

allValues

但我需要的是限制站点数量。站点列在另一个表中

是这样的。但它给了我一个语法错误。在符合 Limit 的情况下

SELECT Umweltdaten.id,Umweltdaten.Temperatur,Umweltdaten.DatumZeit, Umweltdaten.gerateID
FROM Umweltdaten
LEFT JOIN Gerate ON Gerate.gerateID = Umweltdaten.gerateID
ORDER BY Umweltdaten.DatumZeit DESC
LIMIT (SELECT COUNT(gerateID) FROM Gerate);

所以我得到这个输出

enter image description here

也许有人能解决我的问题。

注意:我不想对 LIMIT 函数进行硬编码,因为站号可能会有所不同。我正在使用 phpmyadmin。

最佳答案

我假设“gerate”是您的电台 ID

SELECT 
t.*
FROM
umweltdaten t
INNER JOIN
(SELECT max(id) as id FROM umweltdaten GROUP BY gerateid) u
on t.id = u.id

工作原理:您的 id 希望是一个自动递增的 int。这意味着任何给定 gerateid 的最大 id 是最近的记录。我们按 gerateid 分组并选择最大 id*。因此,内部连接将记录过滤为每个站仅具有最大 ID 的记录,从而给出一个结果集,该结果集是每个站的最新记录

*因为 id 是一个主键,我们不需要任何其他东西 - 如果 pk 是一个 guid(本质上是一个随机数),那么选择最大值是行不通的。我们需要选择例如 gerateid 和最大日期并加入两者。

在任何 greatest-n-per-group 查询中,我们基本上必须找到一种方法来仅获取最大记录。通常我们在进行组操作时,除了可以将其限定为组中的最大值(最大 ID、最大日期等)之外,我们不能引入任何数据,因此我们必须将组操作作为子操作查询,获取最大记录,然后加入代表最大的数据,回表检索我们想要的其余数据

有很多方法可以做到这一点,我最喜欢的方法之一是使用行号分析查询,但它在 MySQL 中不可用

关于mysql - 在主 SELECT 之后使用 SELECT COUNT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52904495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com