我有这个表来存储来自不同供应商的文章。这些是我的表“artPerBrand”中最重要的表字段:
|ID | ArtNrShort | ArtNrLong | SupplierID
--------------------------------------------------
|45 | mik25 | mike25_002 | 1
|326 | mik25 | | 2
我检查表中的行(具有相同的ArtNrShort),如果我找到一个,我想用现有ArtNrLong的值更新具有空ArtNrLong的行。我确实需要输入参数“varArtNrShort”,因为我需要在将来处理一些不同的场景。
我不是一个SQL大师,但我想出了这个查询,它应该几乎在那里。然而,当我执行这个(Python)ArtNrLong的ID 326保持空。我在这里错过了什么?
varArtNrShort = 'mik25'
sql = "UPDATE artPerBrand t1 JOIN artPerBrand t2 ON t1.ArtNrShort = t2.ArtNrShort SET t1.ArtNrLong = t2.ArtNrLong WHERE t1.ArtNrLong = '' AND t2.ArtNrLong <> '' AND t1.ArtNrShort = '%s'"
val = (varArtNrShort)
cur.execute(sql, val)
mydb.commit()
我将我的查询改为:
"UPDATE artPerBrand a1 INNER JOIN artPerBrand a2 ON a1.ArtNrShort = a2.ArtNrShort SET a1.ArtNrLong = a2.ArtNrLong WHERE a2.ArtNrLong IS NOT NULL AND a1.ArtNrLong IS NULL AND a1.ArtNrShort = 'mik25'"
不幸的是,这并没有解决我的问题。ArtNrLong没有更新。
1条答案
按热度按时间mum43rcc1#
我们可以在这里使用以下self join方法: