我目前正在使用以下语句:REPLACE INTO TableName (Col1, Col2, Col3, Col4) SELECT * FROM AnotherTable WHERE Col2 = 'Something' AND Col3 <> 'word'
这样做的问题是TableName包含其他列(即Col0、Col5、Col6(,这些列在OtherTable中不存在,并且我不想擦除其数据。
我注意到有一个名为INSERT INTO ... ON DUPLICATE KEY UPDATE
的语句,但我不确定如何将其与我用于从另一个表复制特定数据的SELECT * FROM
语句合并。 如果可能的话,如何做到这一点?
如有必要,可以使用补充 Python2.7 代码。
服务器版本:10.1.23-MariaDB-9+deb9u1 Raspbian 9.0
INSERT INTO TableName (Col1, Col2, Col3, Col4) SELECT * FROM AnotherTable WHERE Col2 = 'Something' AND Col3 <> 'word' ON DUPLICATE KEY UPDATE Col1=AnotherTable.Col1, Col2=AnotherTable.Col2, Col3=AnotherTable.Col3, Col4=AnotherTable.Col4
请注意,可以通过格式Table.Column
使用完全限定的引用作为静态/指定值的替代项。
正如danblack提醒的那样,REPLACE
功能由引入的ON DUPLICATE KEY UPDATE
接管,这取决于UNIQUE
索引或PRIMARY KEY
。