php - 如何比较具有最佳性能的数组

标签 php mysql sql arrays compare

我正在尝试使用 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 查询来识别两个表之间不匹配的记录。假设两个表具有相同的 idpath(如示例数据所示),您可以使用以下命令在 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/

相关文章:

php - CakePHP - 保存一个 session 变量会删除另一个

php - 如何让php/ajax从mysql获取整数

php - 查询集中的最大值

c# - 如何将 smallmoney 转换为 c#

sql - 如何为 .sdf 数据库编写和运行升级脚本?

sql - 左外连接 3 个表

php - Laravel 简单计数数据库行回显

php - Codeigniter - Bootstrap Modal - 传递数据

php - 如何更新从 session 中获得的记录?

java - 如何使用其他IP(在局域网中连接)将数据存储到mysqldb中