一个表包含以下列:
id
date
field1,
field2
要求是针对 field1
或field2
生成一个报告,该报告显示今天哪些行与前一天具有相同的值,并说明是否是field1
或field2
-或两者都已更改。该报告将不会显示实际的不变值。因此输出应如下所示:
ID FIELDS_CHANGED
10 field1
20 field1,field2
30 field2
40 field1,field2
使用以下查询:
SELECT e1.id, "field1"
FROM my_table e1
INNER JOIN
my_table e2
ON e1.id = e2.id
WHERE e1.date = CURDATE()-1
AND e2.date = CURDATE()-2
AND e1.field1 = e2.field2
UNION
SELECT e3.id, "field2"
FROM my_table e3
INNER JOIN
my_table e4
ON e3.id = e4.id
WHERE e3.date = CURDATE()-1
AND e4.date = CURDATE()-2
AND e3.field2 = e4.field2
礼物:
ID FIELDS_CHANGED
10 field1
20 field1
20 field2
30 field2
40 field1
40 field2
展平以给出上面的输出的正确方法是什么?
以下是一些示例数据
ID DATE FIELD1 FIELD2
10 26/06/19 100 200
10 25/06/19 100 300
20 26/06/19 100 200
20 25/06/19 100 200
30 26/06/19 100 200
30 25/06/19 200 200
40 26/06/19 100 200
40 25/06/19 100 200
谢谢