MySQL:将信息从表复制到另一个具有相反值的信息

时间:2015-03-19 09:23:27

标签: mysql sql

我需要将信息(布尔值)从“详细信息”表复制到“用户”表,与“反对网站”值一样:

表格结构: “用户”表:

id     name     appear
1     John       null
2     Matt       null
3     jack       null
4     sara       null
5     sarah      null

“详情”表:

id      user_id        appaer
1          1           false
2          2           false
3          3           true
4          4           true
5          5           true

结果“用户”表应该是这样的;

id     name     appear
1     John       true
2     Matt       true
3     jack       false
4     sara       false
5     sarah      false

怎么做?

感谢,

3 个答案:

答案 0 :(得分:1)

更新会在true然后false时显示在用户表格中,并将这两个表格加入user_id

update user
set appear=(select case when details.appear='true' then 'false'
                        when details.appear='false' then 'true' end
from details join user
on details.user_id=users.id) 

答案 1 :(得分:0)

您需要使用join and case-when

进行更新
update 
user u join details d on d.user_id = u.id 
set u.appear = case when d.appaer = 'true' then 'false' else 'true' end ;

答案 2 :(得分:0)

您可以JOIN 详细信息用户表,在用户表上使用UPDATE并使用{{3将 true 更改为 false

UPDATE user
SET appear = (
             SELECT CASE WHEN d.appear = 'true' THEN 'false' 
                         WHEN d.appear = 'false' THEN 'true' 
                    END
             FROM details d 
             JOIN users u
             ON d.user_id = u.id
             )