sql - 如何查找A(一维数组)是否是B(二维数组)的一部分?
问题描述
我可以诚实地说我已经离开这里了。
范围。我有两个数据库,其中有表。我想比较这些表是否匹配。
我的做法是:
- 从 db1 table1 获取数据
- 从 db2 table1 获取数据
- 对于 db2 表 1 中的每一行,检查 db1 表 1 中是否存在该确切行
例子:
db1 表 1
- 编号,第 1 列,第 2 列
- 1、aa、bb
- 2,抄送,dd
- 3, ee, ff
db2 表 1
- 编号,第 1 列,第 2 列
- 1、aa、bb
- 3, ee, aa
id=1 的行将不生成任何输出,因为它在 db1 table1 中与在 db2 table1 中完全相同。id=2 的行将不会生成任何输出,因为它完全从 db2 table1 中丢失。id=3 的行将产生错误,因为 column2 中的值在两个数据库之间是不同的。
我已经设法从两个数据库和表中提取数据,现在我将它们放在两个不同的变量中(二维数组?)。现在问题来了。
当我将内容写入主机时,db1 table1 看起来像这样:
@{id=1; column1=aa; column2=bb} @{id=2; column1=cc; column2=dd} @{id=3; column1=ee; column2=ff}
... 并为 db2 table1 精简:
@{id=1; column1=aa; column2=bb} @{id=3; column1=ee; column2=aa}
我的想法是做这样的事情:
foreach ($row in $db2table1) {
if($db1table1.Contains($row)) {
#all is good
}
else {
#error
}
}
但它不起作用。想法?
解决方案
比较对象使这项任务更容易。您可以执行如下检查:
$check = Compare-Object -ref $db1table1 -dif $db2table1
if ($check) {
"Error"
} else {
"All Good"
}
默认情况下,Compare-Object
输出差异仅指示哪个对象具有差异(SideIndicator
属性)。如果没有发现差异,则不输出任何内容。-IncludeEqual
您可以使用和-ExcludeDifferent
参数更改默认行为。
推荐阅读
- c# - 如何在 AspNetCore 3.0 预览版中将引用类型返回为 JSON?
- python - 为 10 折交叉验证实验创建训练/测试 CSV 文件
- spring - Consul 与 Spring Cloud Gateway - 服务间通信
- html - 无法让 flexbox 垂直对齐元素
- r - 在 Mac OS X 上安装 R 包“RcppEigen”时出现问题
- c# - GridView 页面索引
- python - 测试用 X 语言编写的 Python 扩展的推荐方法
- java - 在字段声明中使用 var
- php - 在对 laravel 的请求中设置标头
- design-patterns - 选择微服务与库作为依赖项?