我有两个名为历史记录和历史记录详细信息的表。历史表为我提供了按月访问健身房的计数,因此存在重复的用户。我想更新历史详细信息表以反射(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`
关于MySQL 从另一个表更新一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30740856/