gpt4 book ai didi

python-3.x - sqlite 中条件的编号列表

转载 作者:行者123 更新时间:2023-12-03 15:53:55 24 4
gpt4 key购买 nike

我有一个表,我试图在其中创建一个列,该列将根据有效条件递增。

在我的示例中,我需要更新 department = Marketing 的部门计数。任何人都有使用 SQLite 执行此操作的好方法吗?

当前表

Name        Department     Department_Count
James Accounting NULL
Jennifer Marketing NULL
Micheal Warehouse NULL
Natalie Marketing NULL
Rebecca Marketing NULL

更新表格

Name        Department     Department_Count
James Accounting NULL
Jennifer Marketing 1
Micheal Warehouse NULL
Natalie Marketing 2
Rebecca Marketing 3

编辑:

目前,我将部门为“市场营销”的行插入到一个新表中,然后我使用主键或 rowid 创建一个自动递增,以便我可以对这些类型的项目进行编号。

这需要我创建一个新表,这不是最好的,因为它占用了太多空间,而且该表是多余的,因为我已经在这个原始表中拥有基础数据。

我正在使用 python 与我的数据库交互,如果这有助于解决这个问题的话。

最佳答案

更新

其实仔细想想,你可能不需要触发器:

 INSERT INTO Table (Department, Department_Count) 
VALUES (?, (SELECT MAX(IFNULL(Department_Count, 0)+1 FROM Table WHERE Department = ?))

可能会给你你想要的。

原始答案

您不能以声明方式执行此操作,但您可以使用 trigger 以程序方式完成您想要的操作.

两种可能的策略:

  1. 使用 AFTER INSERT 触发器对最近插入的行执行 UPDATE 语句(RowID 将在 AFTER INSERT 后可用)以根据表中的当前数据将 Departement_Count 列设置为 SELECT 表达式。

  2. 使用 INSTEAD OF 触发器执行备用 INSERT,将 NEW 游标中的值与类似的 SELECT 语句相结合,以从 Department_Count 列中获取最大值(加 1)。

关于python-3.x - sqlite 中条件的编号列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50240991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com