我有两张桌子。第一个表包含一些产品,第二个表用于临时数据存储。两个表具有相同的列名。在
Table `products`: contains this columns
- id (unique, autoincrement)
- name
- quantity
- price
- group
Table `temp_stor`: contains this columns
- id (unique, autoincrement)
- name
- quantity
- price
- group
我想从第一个表中获取一行(名称、数量、价格、组),如果数据不存在,则将其插入到第二个表中。如果temp_stor
中存在相同的数据,我只想更新一列(数量)。在
例如:
我从products
得到下面的一行('cola','1','2.5','soda')
,我想检查temp_stor
,看看这行是否存在。temp_store
表如下所示:
我们看到第二行存在,我想更新它的数量。表格如下所示:
('milk 1L','1','1.5','milks')
('cola','2','2.5','soda')
('bread','1','0.9','pastry')
('7up','1','2.8','soda')
如果表格如下所示:
('milk 1L','1','1.5','milks')
('bread','1','0.9','pastry')
('7up','1','2.8','soda')
我想把这行插入表中。所以看起来像这样:
('milk 1L','1','1.5','milks')
('bread','1','0.9','pastry')
('7up','1','2.8','soda')
('cola','1','2.5','soda')
这可以通过sql查询来实现吗?我需要在python代码中实现它。我可以处理python部分,但我对sql不太在行。在
谢谢你
更新1:
我忘了指明最重要的事情,这是我的错。我想检查product
name
表中是否存在product
name
。只有名称应该是唯一的。如果产品存在,我不想只更新它的quantity
值,如果product
不存在,我想把它插入temp_stor
表中。在
假设“如果数据不存在”意味着“如果名称+数量+价格+组”的组合不存在?
添加
那么
^{pr2}$小调(?)缺点:这会(我认为)“烧掉”身份证。在您的示例中,它将分配
id
的4个新值,但只使用其中一个。更新问题后
没有以上的索引,反而没有这个。(我假设
product
拼写为“name”?)然后。。。
使用此构造时不使用}有不同的值怎么办?
UPDATEing
所有额外列(quantity、price、group)。如果临时存储器的price
或{查看How to connect Python programs to MariaDB以了解如何连接到数据库。
之后,您可以从
temp_stor
中选择与从products
获得的行相同的id
行。让row
是您获得的值的元组。如果此查询的结果不包含任何内容,表明没有此类行,则可以继续插入该行,否则,更新该行。
^{pr2}$更新: 只需执行一个查询即可执行类似操作:
这里我假设}是名称。如果您希望
1
是id
,而{name
是唯一的,那么应该将该键设为该键,因为该查询当前只比较键,在本例中,该键似乎是id
。相关问题 更多 >
编程相关推荐