只有两列,我想只在menu_id
存在时更新。否则,我想插入一个新的行。这里是我的查询:SQL REPLACE不能正常工作
REPLACE `dol_subs_menu_access`
SET `menu_id` = '{$aVars['menu_item']}',
`mlevels` = '{$sMemLevels}'
这将创建一个新的行每次。有什么我失踪?
只有两列,我想只在menu_id
存在时更新。否则,我想插入一个新的行。这里是我的查询:SQL REPLACE不能正常工作
REPLACE `dol_subs_menu_access`
SET `menu_id` = '{$aVars['menu_item']}',
`mlevels` = '{$sMemLevels}'
这将创建一个新的行每次。有什么我失踪?
要么是列在你的声明中的主键?我的猜测是,他们都没有,这是什么REPLACE statement(不要与字符串替换功能相混淆)需要确定它是否更换VS插入...
你可能想看看。这将允许您插入记录或更新记录(如果它已存在)。您将需要在查询中包含主键。
这里是他们的文档页面查询示例:
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
我认为这将是这个样子的查询(测试它第一次虽然)
INSERT INTO `dol_subs_menu_access` (menu_id,mlevels)
VALUES ('{$aVars['menu_item']}','{$sMemLevels}')
ON DUPLICATE KEY UPDATE mlevelsMemLevels='{$sMemLevels}';
或'mlevelsMemLevels = VALUES(mlevelsMemLevels)',没有必要把字符串中的两倍。 – Wrikken 2010-10-04 18:07:09
'REPLACE'在SQL执行字符串替换为子串中的字符串较长。听起来你想'更新'该领域的实际内容到别的东西,这是正确的吗?你还用什么数据库? – JNK 2010-10-04 17:47:56
@JNK:参见[MySQL的REPLACE语句](http://dev.mysql.com/doc/refman/5.1/en/replace.html)。 – 2010-10-04 17:49:26
MySQL对不起,是的,我猜更新是我正在寻找。但如果记录不在那里,我该如何插入一个新的?我想保留它到一个单一的查询 – tmartin314 2010-10-04 17:51:25