我有一个包含以下列的表
id -> VARCHAR (PRIMARY KEY)
data -> TEXT
user_id -> VARCHAR
如果行尚不存在,我想插入此表。否则,请更新data
列并保留其他所有内容。目前我在做这个
REPLACE INTO collate(id,user_id,data)VALUE('$id','$user_id','$data')
。但这会删除一行(如果找到),然后再次插入。它是服务器密集型的
答案 0 :(得分:3)
正如REPLACE
Syntax所述:
REPLACE
是SQL标准的MySQL扩展。它可以插入,也可以删除和插入。对于标准SQL的另一个MySQL扩展 - 插入或更新 - 查看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)
答案 1 :(得分:0)
您应该检查以下网址 insert-on-duplicate(INSERT ... ON DUPLICATE KEY UPDATE语法 )