我目前正在使用以下语句: REPLACE INTO TableName (Col1, Col2, Col3, Col4) SELECT * FROM AnotherTable WHERE Col2 = 'Something' AND Col3 <> 'word'
问题是tablename包含其他列(即col0、col5、col6),这些列不在另一个表中,我不想擦除它们的数据。
我注意到有一种说法叫做 INSERT INTO ... ON DUPLICATE KEY UPDATE
但我不知道如何把它和 SELECT * FROM
我用来从另一个表复制特定数据的语句。如果可能的话,这是怎么做到的?
如有必要,可以使用补充python2.7代码。
服务器版本:10.1.23-mariadb-9+deb9u1 raspbian 9.0
1条答案
按热度按时间3phpmpom1#
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
作为静态/指定值的替代。正如丹布莱克所提醒的
REPLACE
功能由ON DUPLICATE KEY UPDATE
这取决于UNIQUE
索引或PRIMARY KEY
s。