我需要将用户的最后5个搜索结果保留在一个表中。
我写了一个脚本来删除其他行,但是没有用:
DELETE FROM
SELECT
ROW_NUMBER () OVER (ORDER BY search_time DESC) AS row_number;
FROM
history_user
WHERE
user_id = 188
WHERE row_number>5
我做错什么了?
正确的语法,如手册中所述:
DELETE FROM history_user h
USING (
SELECT pk_id, row_number() OVER (ORDER BY search_time DESC) AS rn;
FROM history_user
WHERE user_id = 188
) sub
WHERE sub.rn > 5
AND h.pk_id = sub.pk_id;
唯一的pk_id
列(组合)在哪里?在您的情况下,可能是-或更方便的是代理主键。 __user_id``search_time
对于只是一个 单一的 user_id
,你可以简化为:
DELETE FROM history_user h
USING (
SELECT pk_id
FROM history_user
WHERE user_id = 188
ORDER BY search_time DESC
OFFSET 5
) sub
WHERE h.pk_id = sub.pk_id;
另一方面,要一次处理 多个 用户,您需要添加PARTITION BY
到window函数:
DELETE FROM history_user h
USING (
SELECT pk_id, row_number() OVER (PARTITION BY user_id
ORDER BY search_time DESC) AS rn;
FROM history_user
) sub
WHERE sub.rn > 5
AND h.pk_id = sub.pk_id;
问题 在迭代操作或者其他操作的时候,怎样只保留最后有限几个元素的历史记录? 解决方案 保留有限历史记录正是 collections.deque 大显身手的时候。比如,下面的代码在多行上面做简单的文本匹配, 并返回匹配所在行的最后N行: from collections import deque def search(lines, pattern, history=5): previous_
问题内容: 在过去的几天中,我一直在尝试为我的应用创建类似Instagram的供稿。更具体地说:每当用户从底部更新Feed时,加载新帖子(5)。 我目前正在使用Firebase来存储和显示我的数据。 到目前为止,我的代码如下所示: 因此,我要在这里进行的操作是- 检测到用户何时滚动到底部(在我的scrollViewDidScroll函数中。然后,我将显示活动指示器,并调用函数loadMore(5)
问题内容: 如何构造一个SQL语句以跨多个平面无关表运行,并显示结果以及选择结果和结果的表名。 这种情况是这样的,我有几个表,每个表具有相同的列名。这是我从外部各方收到的数据,它们原样存储在不同的表中。 相同的表如下所示: 我需要一个SQL语句,该语句可在所有表中使用伪代码进行搜索: 在以下演示文稿中给出结果: 更复杂的是,该列可能不在所有表中,因此,如果在该表中找不到该列,则需要仔细进行查询。
我有一个作为模板的电子表格,最后两行以某种特定的方式格式化(颜色和字体)。 它看起来像这样: 我想做的是插入尽可能多的“占位符”行,让最后一行“滑”下来。 到目前为止,我尝试了,它确实插入了新行,但不会向下移动最后一行的颜色。这样我就可以在电子表格中找到我想要的数据,但是颜色格式错误(基本上第三行总是有彩色背景,而最后一行没有)。 我想做的伪代码是: 计算我需要添加多少占位符行, 获取电子表格 剪
我试图运行一个宏,允许用户在一次搜索中最多搜索15个值。用户有时可能只搜索1个值,但最终用户希望此选项可用。我现在的代码在中搜索一个值&找到后,它会将整行复制到,这运行良好。现在我正在尝试最多15个值。我当前的代码如下:
问题内容: 当您执行类似列表在哪里的操作时,python会在列表上进行顺序搜索吗?还是创建哈希表表示来优化查找?在应用程序中,我需要这样做,因为我将在列表上进行很多查找,所以最好先执行诸如此类的操作,然后执行?还要注意,我将拥有的值列表将没有重复的数据,而且我实际上并不在乎它的顺序。我只需要能够检查值的存在。 问题答案: 还要注意,我将拥有的值列表将没有重复的数据,而且我实际上并不在乎它的顺序