当我按类别进行分组时,我如何获得最新的产品标题?
例如,假设这是我的产品表:
id | title | catID | timestamp
1 | apple | 1 | 2020-07-13 08:21:47
2 | pear | 1 | 2020-07-14 08:21:47
3 | kiwi | 1 | 2020-07-15 08:21:47
我想要一个查询,给我的总产品和最后添加。它有点贪心查询,使它变得更困难,但是我想我可以用一个group by来完成这个任务。如果可能的话,我真的更愿意将所有这些都保留在一个查询中。不过,我担心我需要添加一个子查询。
SELECT
p.catID
, COUNT(p.id) as items
, MAX(p.id) as last_added_id
, CASE WHEN p.id = MAX(p.id) THEN p.title
FROM products p
WHERE p.catID = 1
GROUP BY p.catID
问题是,我的头衔是空的
使用窗口函数count()
,max()
和first_value()
:
select distinct
p.catid,
count(*) over (partition by p.catid) items,
first_value(p.id) over (partition by p.catid order by p.timestamp desc) id,
first_value(p.title) over (partition by p.catid order by p.timestamp desc) title,
max(p.timestamp) over (partition by p.catid) timestamp
from products p
请参阅演示。
结果:
> catid | items | id | title | timestamp
> ----: | ----: | -: | :---- | :------------------
> 1 | 3 | 3 | kiwi | 2020-07-15 08:21:47
我实际上想不出一种不使用子查询就能做到这一点的方法。假设您使用的是MySQL8+,我们可以在这里使用窗口函数:
SELECT id, title, catID, timestamp, cnt
FROM
(
SELECT *, COUNT(*) OVER () AS cnt
FROM products
WHERE catID = 1
) t
ORDER BY timestamp DESC
LIMIT 1;
我已经使用MongoDB C#驱动程序以编程方式创建了一个新的文档集合。 现在,我想以编程方式创建和构建索引。我该怎么做呢?
如何通话 拨打电话 接电话 通话时可选择的操作
问题内容: 我试图确定如何访问JObject中的数据,但我终生无法确定如何使用它。 我可以将其打印到执行Console.WriteLine(Object)的控制台中,然后看到数据,它看起来像: 但是我不知道如何迭代/枚举它,任何人都有想法吗?我现在很茫然。 问题答案: 如果您查看相关文档,将会发现它实现了。因此,您可以使用以下命令简单地对其进行迭代:
我使用显示Firestore中的数据并对数据进行分页。我想在Firestore更改时用新数据刷新适配器。在我想通知数据时不起作用。当前我调用以下命令:
问题内容: 我正在考虑AJAX应用程序必须轮询轮询更新有多大限制,而最理想的是javascript能够建立与服务器的真正双向连接。我想知道是否存在将javascript与可以建立tcp连接的浏览器插件集成的方法,以便可以将数据传入和传出浏览器插件。 问题答案: 这是具有类似方法的实现: 套接字 它使用Java Applet,并将其API桥接到JavaScript,有趣的是… 这里是另一个: 套接字
我有这个界面: 我想测试它的实现,但我得到: 在测试中,我使用: 我错过了什么
问题内容: 该代码不起作用 问题答案: JavaScript区分大小写。 因此,如果要更改字体大小,则必须执行以下操作:
问题内容: 我正在使用Express和socket.io创建一个node.js应用程序。我想使用SASS,但我看到有一个npm软件包,我不了解的是如何在SASS npm和应用程序之间链接并使其解析SASS? 更新:我使用SASS中间件https://github.com/andrew/node- sass 安装了它,并通过以下方式包括了它: 但这仍然行不通 问题答案: 您需要使用sass中间件,例