MySQL 从另一个表更新一个表

标签 mysql

我有两个名为历史记录和历史记录详细信息的表。历史表为我提供了按月访问健身房的计数,因此存在重复的用户。我想更新历史详细信息表以反射(reflect)用户访问健身房的月份。我已经更新了历史详细信息表,使用户名唯一,因此没有重复项。下面是我试图在历史详细信息表中实现的示例。

历史

|健身房使用 |月份|
|琼斯|四月 |
|史密斯|四月 |
|琼斯|三月 |
|琼斯|二月 |
|史密斯|贾努阿 |

历史详情

|健身房使用 |简 |二月 |三月 |四月 |
|琼斯_ | _ | X | X | X |
|史密斯_ | X | _ | _ | X |

最佳答案

只需进行数据透视查询:

SELECT `Gym Use`,
       min(IF( `Month` = 'April', 'X', '_' )) As April,
       min(IF( `Month` = 'March', 'X', '_' )) As March,
       min(IF( `Month` = 'Febru', 'X', '_' )) As Febru,
       min(IF( `Month` = 'Janua', 'X', '_' )) As Janua
FROM history
GROUP BY `Gym Use`

演示:http://sqlfiddle.com/#!9/f71c5/1

并在多表更新中使用此查询的结果:

UPDATE `history detail` h, (
   SELECT `Gym Use`,
          min(IF( `Month` = 'April', 'X', '_' )) As April,
          min(IF( `Month` = 'March', 'X', '_' )) As March,
          min(IF( `Month` = 'Febru', 'X', '_' )) As Febru,
       min(IF( `Month` = 'Janua', 'X', '_' )) As Janua
   FROM history
   GROUP BY `Gym Use`
) x
SET h.April = x.April, h.March = x.March, h.Febru = x.Febru, h.Janua = x.Janua
WHERE h.`Gym Use` = x.`Gym Use`

演示:http://sqlfiddle.com/#!9/4c153/1

关于MySQL 从另一个表更新一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30740856/

相关文章:

mysql - 尝试在 ubuntu 上设置 wordpress 并想在 mysql 中授予权限

mysql - mysql中如何对不同子表求和?

MYSQL:如何定义或获取 LONG 字符串变量

php - 如何在 PHP 中正确处理小数?

mysql - 更新表列,使每行都有一个字符串加上递增的数字

php - Android 系统一键登录注册

Java + MySQL 或 LDAP 服务器状态

php - 我如何在 PHP 中使用 MySQL NOT NULL?

mysql - 在mySQL中删除具有多个产品记录的用户

mysql - 未能延迟初始化角色集合 : <Relation Class>could not initialize proxy - no Session