首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MySQL中更新表A,加入另一个表?

如何在MySQL中更新表A,加入另一个表?
EN

Stack Overflow用户
提问于 2013-09-06 14:43:53
回答 2查看 95关注 0票数 1

我有一个stats表,它有一个user_id。我有一个users表,它的id对应于上面的user_id。我还在employee表中有一个users标志。

我想更新stats表中的所有记录,其中user_id不是员工的记录。

理想情况下,我希望通过CodeIgniter Active Record来完成这个任务,但是我也可以使用原始查询。

谢谢!

编辑我的尝试

代码语言:javascript
复制
if($employee == false) {
  $this->db->where('(default_profiles.opid = 0 OR default_profiles.opid IS NULL)');  
} else {
  $this->db->where('default_profiles.opid > 0');
}
$this->db->join('weekly_stats', 'default_weekly_stats.user_id = default_profiles.user_id');

$this->db->update('default_weekly_stats', $data);

然而,这只会产生:

代码语言:javascript
复制
UPDATE `default_weekly_stats` SET `rank` = 1 WHERE `default_weekly_stats`.`week` = '1' AND `default_weekly_stats`.`correct_picks` = '4' AND (default_profiles.opid = 0 OR default_profiles.opid IS NULL)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-06 14:50:10

还没有试过,但也许应该是这样的:

代码语言:javascript
复制
$this->db->where_not_in('users.employee_flag', '0')->join('users', 'users.user_id = stats.user_id')->update('stats', $data);

编辑:(基于@dianuj答案)

代码语言:javascript
复制
$this->db->set('rank', $rank );
if($employee == false) {
  $this->db->where('(default_profiles.opid = 0 OR default_profiles.opid IS NULL)');  
} else {
  $this->db->where('default_profiles.opid > 0');
}
$this->db->update('weekly_stats ON default_weekly_stats.user_id = default_profiles.user_id');
票数 1
EN

Stack Overflow用户

发布于 2013-09-06 14:46:30

代码语言:javascript
复制
update stats s
inner join users u on u.id = s.user_id
                   and u.employee = 0
set some_column = 'some_value'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18660466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档