我有一个包含以下列的表格
id -> VARCHAR (PRIMARY KEY)
data -> TEXT
user_id -> VARCHAR
如果行不存在,我想插入到这个表中。否则更新 data
列并保持其他一切不变。目前我正在做这个
REPLACE INTO collate(id,user_id,data)VALUE('$id','$user_id','$data')
。但这会删除一行(如果找到)然后再次插入。服务器密集型
最佳答案
根据 REPLACE
Syntax 记录:
REPLACE
is a MySQL extension to the SQL standard. It either inserts, or deletes and inserts. For another MySQL extension to standard SQL—that either inserts or updates—see Section 13.2.5.3, “INSERT ... ON DUPLICATE KEY UPDATE
Syntax”.
因此:
INSERT INTO collate
(id, user_id, data)
VALUES
('$id','$user_id','$data')
ON DUPLICATE KEY UPDATE
data = VALUES(data)
关于mysql - INSERT 或 UPDATE 不是 mysql 中的主列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14292867/