【发布时间】:2017-08-22 00:11:28
【问题描述】:
我有以下数据库表
这是我的示例数据。
我想弄清楚如何做的是如何编写一个查询来选择所有 apntoken 为 userid='20' 按 deviceid 然后按 apntoken 分组(除了它应该显示最新的 apntoken)。
我尝试过的一些查询是这样的。
SELECT
DISTINCT apntoken,deviceid,created
FROM `distribution_mobiletokens`
WHERE userid='20'
GROUP BY deviceid
这将返回以下结果。
请注意日期不是最新日期。我为 apntoken 添加了一个名为“latestone”的虚假条目,我将其日期设置为未来。
我尝试的另一个查询是这个。
SELECT
DISTINCT apntoken,deviceid,created
FROM `distribution_mobiletokens`
WHERE userid='20'
GROUP BY deviceid,apntoken
这个问题但是我现在有额外的设备ID数据,因为它不再是唯一的了吗?
参考图片
我不确定如何修改此查询以执行此操作,或者这是否容易实现?
例如,我应该只返回“2”个字段的数据。 deviceid 5628CF60-D0CF-479A-A944-A3496E085FC8 和 948D9BAD-B164-4830-ACEB-08A089A80558 的一个,就像我尝试的第一个查询的图片一样,但它应该显示显示“latestone”的 apntoken
我需要这个的原因是,我总是将“最新”令牌发送给苹果,以获取特定设备的推送通知。每次用户登录设备时都是相同的,但 apntoken 可以不同。所以我想如果我可以从设备中为用户获取最新的 apntoken,这就可以解决问题。
我尝试过的其他查询
SELECT apntoken,deviceid,created
FROM `distribution_mobiletokens`
WHERE userid='20'
GROUP BY deviceid ORDER BY created DESC
请注意,它不显示应显示其日期的最新消息
【问题讨论】:
-
按设备 ID、apntoken 分组...
-
我忘了说我试过了,但这对我不起作用将编辑问题
-
group by 用于聚合函数为 min , count .. 我在您的查询中看不到任何聚合函数 .. 如果您需要唯一的行,您可以使用 distinct ..(但不同且分组没有意义)
-
我最近修改了问题以使其更清楚,让我知道这是否有帮助,基本上我需要以某种方式对 deviceid 的 Group By 进行 Order By,它按 createdDate 对分组进行排序最新的
-
按创建的 desc 排序如何