bounty将在7天后到期。对这个问题的回答有资格获得+100的声誉奖励。Bird87 ZA希望引起更多的关注这个问题。
我需要从数据库获取初始状态以及最新状态。这是两个以上的表格:
customer
ID|姓名|姓氏|道布|邮箱|电话
-|
|10|Steve|Bobble|1970年01月01日|UVW@XYZ.com|0123456789
15|詹姆斯|邦德|1950年01月1日|007@bond.com|0101010999
audit_log
Id|实体id|属性|old_value|new_value
-|
1|10|姓名|John|Steve
2|10|邮箱|abc@Def.com|UVW@XYZ.com
3|10|电话||0123456789
我期望的输出如下所示:
ID|姓名|姓氏|道布|邮箱|电话
-|
|10|Steve|Bobble|1970年01月01日|UVW@XYZ.com|0123456789
10_1|John|Bobble|01-01-1970|abc@Def.com|
15|詹姆斯|邦德|1950年01月1日|007@bond.com|0101010999
我最初有一个PHP脚本,它遍历所有customer
行,然后将它们与audit_log
行匹配并从那里生成输出,但速度非常慢,并且占用大量资源。
这样的事情可以直接在MySQL中实现吗?我该怎么做呢?
编辑
我已经向customer
和输出表中添加了额外的行。输出表需要包含customer
中的所有行,以及从audit_log
构建的初始行的副本。
1条答案
按热度按时间bzzcjhmw1#
考虑到每个**
entity
-property
对每个entity_id
**值最多有一个更新,您可以使用以下SQL Select语句其中,取消透视
old
与new
值在AUDIT_LOG表中发生的properties
更改,而从customer
表中获取其他(未更改的值Demo