Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x sqlite中条件的编号列表_Python 3.x_Sqlite - Fatal编程技术网

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

Python 3.x sqlite中条件的编号列表,python-3.x,sqlite,Python 3.x,Sqlite,我有一个表,我试图在其中创建一列,该列将根据有效条件递增 在我的示例中,我需要更新department=Marketing的department count。有人能用SQLite很好地做到这一点吗 当前表 Name Department Department_Count James Accounting NULL Jennifer Marketing NULL Micheal Warehouse NULL Natalie

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

在我的示例中,我需要更新department=Marketing的department count。有人能用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 = ?))
我可以给你你想要的

原始答案

您不能以声明的方式完成这项工作,但您可能可以通过使用一个

两种可能的战略:

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

  • 使用INSTEAD OF触发器执行替代插入,将新游标中的值与类似的SELECT语句组合在一起,以从Department_Count列中获取最大值(加1)


  • 到目前为止,您尝试了什么?老实说,我不知道sqlite是否能够满足我的要求。目前,我将其放入一个新表中,然后使用rowid给我一个增量值。这不是一个很好的解决方案,因为我必须创建一个全新的表来实现这一点,我真的希望将其包含在一个表中,如果可以在sqlite中实现的话,只需更新列即可。