根据join和self join MySql Rails设置列值

时间:2016-07-28 01:10:36

标签: mysql ruby-on-rails

我正在尝试根据以下查询在MySQL中设置列值。

select * from table1 t1
join table2 t2
on t1.id = u.t1_id
and t2.status = 'verified'
and not exists (
    select 1 
    from table2 t2_2
    where t2.t1_id = t2_2.t1_id
    and t2_2.updated_at > t2.updated_at
) 

此查询返回我想要的结果,但是当我尝试添加

SET t1.column_k = 'some value'

到最后,我收到的错误只是简单地说You've got a syntax error near set t1.column_k....检查与您的MySQL版本对应的手册。

我真的很想知道如何在这个查询的结果中包含一个集合,并且我在制定它时遇到了麻烦。任何帮助或想法?

由于self join,我认为这很难让我感到困惑。最终的计划是将此查询与set命令一起移植到migration file in rails一旦我运行它。

1 个答案:

答案 0 :(得分:0)

您需要updateSelect不用于设置值。

update table1 t1 join
       table2 t2
       on t1.id = u.t1_id and
          t2.status = 'verified' and
          not exists (select 1 
                      from table2 t2_2
                      where t2.t1_id = t2_2.t1_id and
                            t2_2.updated_at > t2.updated_at
                     ) 
    set t1.column_k = 'some value';