gpt4 book ai didi

mysql - 需要在 MySQL 表中查找新的唯一 ID 号的数量

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

我有一个 iPhone 应用程序,每当用户使用它时,它都会“调用”我的服务器。在我的服务器上,我每次都在 MySQL 表中创建一行,其中包含设备、IP 地址和其他数据的唯一 ID(类似于序列号)也就是 UDID。

ClientLog 列:时间、UDID等

我想知道的是给定日期的 设备(新的唯一 UDID)的数量。 IE。有多少 UDID 在给定日期添加到表中但未在该日期之前出现?说白了,这就是我那天获得的新用户数。

这很接近,我想,但我还没有 100% 达到目标,也不确定这是否是我想要的...

SELECT distinct UDID
FROM ClientLog a
WHERE NOT EXISTS (
SELECT *
FROM ClientLog b
WHERE a.UDID = b.UDID AND b.Time <= '2010-04-05 00:00:00'
)

我认为返回的行数是给定日期之后的新唯一身份用户,但我不确定。我想添加到语句中以将其限制在一个日期范围内(同时指定一个上限)。

最佳答案

您的查询似乎是正确的,您可以像这样添加边界:

SELECT DISTINCT UDID FROM ClientLog a WHERE a.Time >= '2010-04-05 00:00:00'
AND a.Time < '2010-04-06 00:00:00'

AND NOT EXISTS(SELECT * FROM ClientLog b WHERE a.UDID = b.UDID
AND b.Time < '2010-04-05 00:00:00');

更新:下面是我想到的另一种方法,但我认为它更慢:

SELECT DISTINCT UDID FROM ClientLog a WHERE a.Time >= '2010-04-05 00:00:00'
AND a.Time < '2010-04-06 00:00:00'
AND a.UDID <> ALL
(SELECT DISTINCT udid FROM ClientLog b where b.Time < '2010-04-05 00:00:00');

更新 2:当然,如果您只对新 UDID 的数量感兴趣,那么这将是最好的解决方案:

SELECT COUNT(DISTINCT UDID) FROM ClientLog WHERE Time < '2010-04-05 00:00:00';
SELECT COUNT(DISTINCT UDID) FROM ClientLog WHERE Time < '2010-04-06 00:00:00';

然后在你的代码中找出差异(可能有一种方法可以在 MySQL 中做到这一点,但我不是 MySQL 专家)。

关于mysql - 需要在 MySQL 表中查找新的唯一 ID 号的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2581358/

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