Day1
IP Address Model Number MAC Address Host Name Date Phone Load Version
10.1.1.14 CP-8945 70CA9B010000 SEP70CA9B01001 2012-06-01 SCCP 9-2-2-0
10.1.1.15 CP-8945 70CA9B010001 SEP70CA9B01002 2012-06-01 SCCP 9-2-2-0
10.1.1.16 CP-8945 70CA9B010002 SEP70CA9B01003 2012-06-01 SCCP 9-2-2-0
10.1.1.17 CP-8945 70CA9B010003 SEP70CA9B01004 2012-06-01 SCCP 9-2-2-0
Day2
IP Address Model Number MAC Address Host Name Date Phone Load Version
10.1.1.14 CP-8945 70CA9B010000 SEP70CA9B01001 2012-06-02 SCCP 9-2-2-0
10.1.1.15 CP-8945 70CA9B010001 SEP70CA9B01002 2012-06-02 SCCP 9-2-2-0
10.1.1.16 CP-8945 70CA9B010002 SEP70CA9B01003 2012-06-02 SCCP 9-2-2-0
10.1.1.17 CP-8945 70CA9B010003 SEP70CA9B01004 2012-06-02 SCCP 9-2-2-1
Result
10.1.1.17 CP-8945 70CA9B010003 SEP70CA9B01004 2012-06-02 SCCP 9-2-2-1
我不确定这是否可行。我有一个MySQL表,除了date之外还有多个匹配的行。我如何比较2个日期并列出任何列中的差异?
答案 0 :(得分:0)
听起来像你想要的是设置差异。
在代码中处理此问题的一种简单方法是简单地计算相关数据的设置差异。您可以通过简单地连接指示更改的字段(并且可能将它们与颜色连接以便稍后将它们分开)来为每行创建“指纹”。
伪代码:
SET1 = SELECT CONCAT(ip, ":", model_number, ":", mac_address, ":", host_name, ":", load_version) FROM day1
SET2 = SELECT CONCAT(ip, ":", model_number, ":", mac_address, ":", host_name, ":", load_version) FROM day1
RESULT = SET2 - SET1
答案 1 :(得分:0)
我之前在SQL Trigger中尝试过相同的场景,这就是我所做的。
SELECT
d2.ip_add,
d2.mdl_num,
d2.mac_add,
d2.host_name,
d2.date,
d2.phone,
d2.load_ver
From
day2 d2
LEFT JOIN
day1 d1
ON
d1.ip_add = d2.ip_add
WHERE
d2.ip_add <> d1.ip_add
OR
d2.mdl_num <> d1.mdl_num
OR
d2.mac_add <> d1.mac_add
OR
d2.host_name <> d1.host_name
OR
d2.phone <> d1.phone
OR
d2.load_ver <> d1.load_ver;
这将返回两个相同表之间的差异。
我编辑我的查询,以便它只能查看1个表。 试试这个,
SELECT
d2.ip_add,
d2.mdl_num,
d2.mac_add,
d2.host_name,
d2.date,
d2.phone,
d2.load_ver
FROM
(SELECT
ip_add,
mdl_num,
mac_add,
host_name,
DATE,
phone,
load_ver,
day
FROM
tblRecords
WHERE
day = 2
) AS d2
LEFT JOIN
(SELECT
ip_add,
mdl_num,
mac_add,
host_name,
DATE,
phone,
load_ver,
day
FROM
tblRecords
WHERE
day = 1
) AS d1
ON
d1.ip_add = d2.ip_add
WHERE
d2.ip_add <> d1.ip_add
OR
d2.mdl_num <> d1.mdl_num
OR
d2.mac_add <> d1.mac_add
OR
d2.host_name <> d1.host_name
OR
d2.phone <> d1.phone
OR
d2.load_ver <> d1.load_ver;