2
我有以下MySQL的表结构,并用它作为一种记录表(entries_log)的:如何查询mysql表中的更改?
customer_id | parent_id | child_id | quarter | month
xyz | 21 | 3 | 20121 | 201201
xyz | 21 | 5 | 20121 | 201201
xyz | 21 | 5 | 20122 | 201204
xyz | 21 | 6 | 20122 | 201204
xyz | 21 | 4 | 2| 201207
... | ... | .... | .... | ...
我希望你能表的想法。现在我想跟踪每个customer_id和父母上一个季度与上一季度相关的child_id是否有任何上行变化(可能在四分之一行中存在差距,所以下面的例子是可能的,并且必须被认为是:20121 ... 20122 .... 20124)。
所以在上面我只是想有以下输出的例子:
xyz | 21 | 5 | 20121 | 201201
xyz | 21 | 6 | 20122 | 201204
我计算出这个查询:
SELECT e.customer_id, e.parent_id, e.child_id, e.month, e.quarter
FROM (
SELECT MAX(month) AS maxmonth, quarter, max(child_id)
FROM entries_log AS e
WHERE EXISTS (
SELECT *
FROM entries_log AS f
WHERE (
SELECT COUNT(*) FROM entries_log AS g
WHERE g.quarter = f.quarter
AND g.month = f.month
) <= 2
AND e.quarter > quarter
AND e.child_id> child_id
)
GROUP BY quarter
) AS x
INNER JOIN entries_log AS e ON e.quarter = x.quarter AND e.month = x.maxmonth;
我读this网站,这对我帮助很大,但我仍然无法找到正确的查询。
我感谢您的帮助,谢谢!
它可以使用[变量](http://dev.mysql.com/doc/refman/5.0/en/user-variables.html)完成。坦率地说,除非你发布了巨额奖金,否则我不会告诉你代码,因为这只是太多的工作。 – Bohemian 2012-03-09 12:41:08
谢谢你的回答,波希米亚人。但我不能为这个问题花钱;) – user1259201 2012-03-09 12:49:28
他可能并不是指金钱,而是业力赏金。但你没有足够的业力来发布这样的奖励呢。无论如何,多好的学习机会! :-D – 2012-03-09 13:39:00