簡體   English   中英

我如何在MySQL中更新表A聯接另一個表?

[英]How can I UPDATE Table A in MySQL joining another table?

我有一個具有user_idstats 我有一個users表,其id與上述user_id相對應。 我的users表中也有一個employee標志。

我想更新stats表中的所有記錄,其中user_id不是員工的記錄。

理想情況下,我想通過CodeIgniter Active Record進行此操作,但是我也可以使用原始查詢。

謝謝!

編輯我的嘗試

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);

但是,這只會產生:

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)

還沒有嘗試過,但也許應該是這樣的:

$this->db->where_not_in('users.employee_flag', '0')->join('users', 'users.user_id = stats.user_id')->update('stats', $data);

編輯:(基於@dianuj答案)

$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');
update stats s
inner join users u on u.id = s.user_id
                   and u.employee = 0
set some_column = 'some_value'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM