相关疑难解决方法(0)

获取具有列的最大值的行

表:

UserId, Value, Date.
Run Code Online (Sandbox Code Playgroud)

我想得到UserId,每个UserId的max(Date)值.也就是说,具有最新日期的每个UserId的值.有没有办法在SQL中执行此操作?(最好是Oracle)

更新:对任何含糊不清的道歉:我需要获取所有UserIds.但对于每个UserId,只有该用户具有最新日期的那一行.

sql oracle greatest-n-per-group

556
推荐指数
10
解决办法
56万
查看次数

SQLite - 选择一列的DISTINCT并获取其他列

我有一个这样的表(但有更多列):

Code    Quantity         
-----   --------       
00001      1           
00002      1           
00002      1           
00002      2           
00003      2          
00003      1          
Run Code Online (Sandbox Code Playgroud)

我希望得到与SELECT DISTINCT Code FROM table(00001,00002,00003)相同的结果,但是与所有其他表列相同.

更新:如果我执行此操作:SELECT DISTINCT Code, Quantity from table 我得到:

    Code    Quantity         
    -----   --------       
    00001      1           
    00002      1           
    00002      2           
    00003      1          
    00003      2  
Run Code Online (Sandbox Code Playgroud)

我想得到:

    Code    Quantity         
    -----   --------       
    00001      1           
    00002      1                   
    00003      1 
Run Code Online (Sandbox Code Playgroud)

提前致谢!

sqlite select distinct ios

15
推荐指数
3
解决办法
2万
查看次数

如何在SQLAlchemy中实现仅附加版本化的模型

我想在仅附加数据存储区中重新实现一些现有的SQLAlchemy模型; append-only意味着该对象仅使用INSERT语句更新,而不是使用UPDATE或DELETE语句.

UPDATE和DELETE语句将替换为增加版本的另一个INSERT.将有一个is_deleted标志而不是DELETE,is_deleted=True将创建一个新版本:

id  | version | is_deleted | name      | description ...
---- --------- ------------ ----------- ---------------
  1 |       1 |          F | Fo        | Text text text.
  1 |       2 |          F | Foo       | Text text text.
  2 |       1 |          F | Bar       | null 
  1 |       3 |          T | Foo       | Text text text.         
Run Code Online (Sandbox Code Playgroud)

另外,

  • 所有SELECT语句都需要重写为每个id的最大版本号,如本问题所述:PostgreSQL - 获取具有列的Max值的行
  • 需要通过"id"主键将所有(唯一)索引重写为唯一的,因为每个id可能不止一次出现.

我知道如何解决大多数这些问题,但我正在努力处理SQLAlchemy中的事件挂钩,它将处理需要在更新和删除时完成的某些事情.

SQLAlchemy文档已经有一些版本控制的基本示例.该版本行例子来接近我想要的东西,但他们不处理(1)删除和(2)外键关系.

(1)删除.我知道有一个session.deleted字段,我将以类似于如何session.dirtyversioned_rows.py …

python sql postgresql sqlalchemy soft-delete

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

使用最大列值过滤记录的Django查询

有没有一种简单的方法来根据哪个记录在列中具有最大/最小值来过滤Django查询?我基本上是在问这些 问题,但是在Django的ORM的特定背景下.

例如

假设我有一个模型,用于存储每个人电话号码的历史值.

class Person(models.Model):
    name = models.CharField(max_length=100)
    phone = models.CharField(max_length=100)
    created = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

记录:

Person(name='Jim',phone='123-456-9870', created=datetime(2005,1,2,4,2))
Person(name='Jim',phone='329-802-9870', created=datetime(2006,9,2,7,8))
Person(name='Sue',phone='324-345-3450', created=datetime(2008,7,4,6,1))
Run Code Online (Sandbox Code Playgroud)

现在说我想找到每个人最近的电话号码.

在SQL中,我通常必须使用子查询来计算最大值:

SELECT p1.name, p1.phone, p1.created
FROM person_person p1, (
    SELECT name, MAX(created) AS max_created
    FROM person_person
    GROUP BY name
) AS p2
WHERE p1.name = p2.name AND p1.created = p2.max_created
Run Code Online (Sandbox Code Playgroud)

Django中是否有任何可以简化此操作的机制?

我在我的后端使用PostgreSQL,因此任何依赖PostgreSQL特定功能的想法或解决方案都会有所帮助.

python sql django postgresql django-orm

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

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