med*_*iev 5 php mysql sql zend-framework zend-db
我正在定期解析json feed并且只需要从feed中插入最新用户并忽略现有用户.
我认为我需要的是ON DUPLICATE KEY UPDATE或INSERT IGNORE基于一些搜索,但我不太确定我问的是什么 - 例如:
users
1 John
2 Bob
Run Code Online (Sandbox Code Playgroud)
部分JSON:
{ userid:1, name:'John' },
{ userid:2, name:'Bob' },
{ userid:3, name:'Jeff' }
Run Code Online (Sandbox Code Playgroud)
从这个饲料我只想插入杰夫.我可以通过所有用户做一个简单的循环,并做一个简单的SELECT查询,看看用户id是否已经在表中,如果不是我做INSERT,但我怀疑它不是一个有效和实用的方法.
顺便说一句,如果有人愿意提供具体的答案,我正在使用Zend_Db进行数据库交互:)我不介意一般的战略解决方案.
该ON DUPLICATE KEY UPDATE替代允许引用更新与插入决定到数据库:
INSERT INTO table (userid, name) VALUES (2, 'Bobby');
ON DUPLICATE KEY UPDATE name = 'Bobby';
Run Code Online (Sandbox Code Playgroud)
如果已存在具有用户标识2的条目,则会将名称字段更新为"Bobby".
INSERT IGNORE如果您向UPDATE提供无效操作,则可以使用它作为替代方法:
INSERT INTO table (userid, name) VALUES (2, 'Bobby');
ON DUPLICATE KEY UPDATE name = name;
Run Code Online (Sandbox Code Playgroud)
如果用户标识2已存在,则无效,从而避免了警告和吞下您在使用时遇到的其他错误INSERT IGNORE.
另一种选择是REPLACE:
REPLACE INTO table (userid, name) VALUES (2, 'Bobby');
Run Code Online (Sandbox Code Playgroud)
如果用户标识2尚不存在,这将执行正常插入.如果它确实存在,它将首先删除旧条目,然后插入一个新条目.
请注意,这两个版本都是SQL特定于MySQL的扩展.
| 归档时间: |
|
| 查看次数: |
7980 次 |
| 最近记录: |