插入数据怎么使用 replace into [ 2.0 版本 ]
求大神指教 我现在操作数据库都是继承ActiveRecord
class UserWeibo extends ActiveRecord
{
public static function tableName()
{
return '{{%user_weibo}}';
}
/**
* 添加
*/
public function add($data)
{
$this->setAttributes($data, false);
if(self::find()->where(['id'=>$data['id']])->count() > 0) { //重复关注
return $this->edit(['id'=>$data['id']], $data);
}
return $this->save();
}
}
现在每次插入前都先判断下是否存在 我想改成用mysql的 replace into 求教应该怎么写
最佳答案
-
MySQL replace into 有三种形式:
replace into tbl_name(col_name, ...) values(...)
replace into tbl_name(col_name, ...) select ...
replace into tbl_name set col_name=value, ...
第一种形式类似于insert into的用法,
第二种replace select的用法也类似于insert select,这种用法并不一定要求列名匹配,事实上,MYSQL甚至不关心select返回的列名,它需要的是列的位置。例如,replace into tb1( name, title, mood) select rname, rtitle, rmood from tb2;?这个例子使用replace into从?tb2中将所有数据导入tb1中。
第三种replace set用法类似于update set用法,使用一个例如“SET col_name = col_name + 1”的赋值,则对位于右侧的列名称的引用会被作为DEFAULT(col_name)处理。因此,该赋值相当于SET col_name = DEFAULT(col_name) + 1。
共 2 条回复
其他 1 个回答
路人甲
注册时间:2015-06-24
最后登录:2017-09-26
在线时长:11小时13分
最后登录:2017-09-26
在线时长:11小时13分
- 粉丝3
- 金钱125
- 威望0
- 积分235