相关疑难解决方法(0)

选择每个GROUP BY组中的第一行?

正如标题所示,我想选择用a组成的每组行的第一行GROUP BY.

具体来说,如果我有一个purchases看起来像这样的表:

SELECT * FROM purchases;
Run Code Online (Sandbox Code Playgroud)

我的输出:

id | customer | total
---+----------+------
 1 | Joe      | 5
 2 | Sally    | 3
 3 | Joe      | 2
 4 | Sally    | 1

我想查询每个产品id的最大购买量(total)customer.像这样的东西:

SELECT FIRST(id), customer, FIRST(total)
FROM  purchases
GROUP BY customer
ORDER BY total DESC;
Run Code Online (Sandbox Code Playgroud)

预期产出:

FIRST(id) | customer | FIRST(total)
----------+----------+-------------
        1 | Joe      | 5
        2 | Sally    | 3

sql sqlite postgresql group-by greatest-n-per-group

1205
推荐指数
16
解决办法
95万
查看次数

我如何(或可以)在多列上选择DISTINCT?

我需要检索表中的所有行,其中2列组合都是不同的.因此,我希望所有在同一天没有任何其他销售的销售以相同的价格出售.基于日期和价格的唯一销售将更新为活动状态.

所以我在想:

UPDATE sales
SET status = 'ACTIVE'
WHERE id IN (SELECT DISTINCT (saleprice, saledate), id, count(id)
             FROM sales
             HAVING count = 1)
Run Code Online (Sandbox Code Playgroud)

但是我的大脑比那更远了.

sql postgresql distinct duplicates sql-update

382
推荐指数
4
解决办法
86万
查看次数

删除PostgreSQL中的重复记录

我在PostgreSQL 8.3.8数据库中有一个表,它没有键/约束,并且有多行具有完全相同的值.

我想删除所有重复项,每行只保留1份.

特别是有一列(称为"密钥")可用于识别重复(即每个不同的"密钥"应该只存在一个条目).

我怎样才能做到这一点?(理想情况下使用单个SQL命令)在这种情况下,速度不是问题(只有几行).

sql postgresql duplicates

94
推荐指数
8
解决办法
6万
查看次数

有序序列生成

有没有办法为表记录生成某种有序标识符?

假设我们有两个线程在进行查询:

线程1:

begin;
insert into table1(id, value) values (nextval('table1_seq'), 'hello');
commit;
Run Code Online (Sandbox Code Playgroud)

线程2:

begin;
insert into table1(id, value) values (nextval('table1_seq'), 'world');
commit;
Run Code Online (Sandbox Code Playgroud)

完全可能(取决于时间)外部观察者会看到(2,'世界')记录出现在(1,'你好')之前.

这很好,但是我想要一种方法来获取自上次外部观察者检查它以来出现的'table1'中的所有记录.

那么,有没有办法按照插入的顺序获取记录?也许OID可以提供帮助?

postgresql sequence

10
推荐指数
2
解决办法
3798
查看次数

查找不存在连接的记录

我有一个范围来限制所有questions用户是否投票.在模型中:

scope :answered_by, lambda {|u| joins(:votes).where("votes.user_id = ?", u.id) }
scope :unanswered_by, lambda {|u| joins(:votes).where("votes.user_id != ?", u.id) }
Run Code Online (Sandbox Code Playgroud)

在控制器中,我这样称呼它们:

@answered = Question.answered_by(current_user)
@unanswered = Question.unanswered_by(current_user)
Run Code Online (Sandbox Code Playgroud)

unanswered_by范围不正确.我基本上想找到没有投票的地方.相反,它试图寻找是否存在与当前用户不相等的投票.任何想法如何返回不存在连接的所有记录?

sql postgresql ruby-on-rails

9
推荐指数
1
解决办法
9881
查看次数

PostgreSQL删除重复项

我正在研究postgres查询以从表中删除重复项.下表是动态生成的,我想编写一个select查询,如果第一行有重复值,它将删除记录.

该表看起来像这样

Ist col  2nd col
 4        62
 6        34
 5        26
 5        12
Run Code Online (Sandbox Code Playgroud)

我想写一个select查询,删除第3行或第4行.

postgresql

6
推荐指数
1
解决办法
4777
查看次数

如何在 DELETE 语句中使用行的物理位置 (ROWID)

我有一个表有很多重复的行并且没有主键。
我只想删除重复的记录,但是当我尝试这样做时,它会删除所有对等点。

如何ROWID从 Postgres 的表中找到?

sql database postgresql rowid

4
推荐指数
2
解决办法
1万
查看次数

如何从表中删除某些列(但不是全部)在postgresql中重复的行?

我读过以前的问题,但它们与我的不相似(例如,我没有唯一的标识符).

说这是我的表行:

  id     string       x    y    z    time_x                 
10318    'hello'   33700  5053  8  2015-07-03 12:39:49.61408
14071    'hello'   33700  5053  8  2015-07-03 12:39:49.61408
Run Code Online (Sandbox Code Playgroud)

基本上一切都是相同的,除了行的id.如何识别这些情况并删除冗余行?

注意:并非表中的所有行都是重复的.应保留常规行.

sql postgresql

1
推荐指数
1
解决办法
56
查看次数

如何删除postgres中的重复项(无唯一ID)

我在删除重复行时遇到了一些困难。我认为 user_id 和 time_id 一起充当标识符,但它们甚至是重复的。

user_id(文本)、time_id(bigint)、value1(数字)

user_id; time_id; value1| 
aaa;1;3|
aaa;1;3|
aaa;2;4|
baa;3;1|
Run Code Online (Sandbox Code Playgroud)

在这种情况下,如何删除重复项?因为我在 time_id 中有 16 个不同的值,在 user_id 中有 15,000 个不同的值,所以我尝试了这样的事情,但我没有唯一的 id..

    DELETE FROM tablename a
     USING tablename b
    WHERE a.unique_id < b.unique_id
    AND   a.user_id = b.user_id
    time_id = 1       (repeat till time_id 16)
Run Code Online (Sandbox Code Playgroud)

postgresql uniqueidentifier duplicates

1
推荐指数
1
解决办法
4122
查看次数