我正在尝试使用 PHP/MySQL 比较两个不同数据库的同一个表(寻找不同的值)。
我已经在数组中拥有每个表的字段/值:
DATABASE1.CONFIGTABLE
array(2) {
[0]=>
array(4) {
["id"]=>
string(1) "1"
["path"]=>
string(20) "some/key"
["value"]=>
string(1) "Unique value"
}
[1]=>
array(4) {
["id"]=>
string(1) "2"
["path"]=>
string(21) "some/url"
["value"]=>
string(21) "http://domain1.com/"
}
}
DATABASE2.CONFIGTABLE
array(2) {
[0]=>
array(4) {
["id"]=>
string(1) "1"
["key"]=>
string(20) "some/key"
["value"]=>
string(1) "Unique value"
}
[1]=>
array(4) {
["id"]=>
string(1) "2"
["key"]=>
string(21) "some/url"
["value"]=>
string(21) "http://domain2.com/"
}
}
我想比较它们并返回一个仅包含不同值的数组。例如,如果所有值都相同(“id”和“key”),但“value”字段不同,请将其添加到最终数组中。
由于两个表的“唯一值”相同,但域不同,因此所需的数组将如下所示:
array(1) {
[0]=>
array(4) {
["id"]=>
string(1) "2"
["key"]=>
string(21) "some/url""
["value"]=>
string(21) "http://domain2.com/"
}
}
或者更好:
array(1) {
[0]=>
array(4) {
["id"]=>
string(1) "2"
["key"]=>
string(21) "some/url""
["value_1"]=>
string(21) "http://domain1.com/",
["value_2"]=>
string(21) "http://domain2.com/"
}
}
我们的想法是寻找性能方面的最佳方法,因为表可以包含数千行。
我希望它是清楚的,提前致谢。
最佳答案
您可以使用简单的 SQL 查询来识别两个表之间不匹配的记录。假设两个表具有相同的 id
和 path
(如示例数据所示),您可以使用以下命令在 value
列中发现差异:此查询:
SELECT
t1.id,
t1.path,
t1.value value1,
t2.value value2
FROM database1.configtable t1
INNR JOIN database2.configtable t2
ON t1.id = t2.id
AND t1.path = t2.path
AND t1.value != t2.value
关于php - 如何比较具有最佳性能的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57947961/