if 语句有条件$item2 eq $itemto || $item eq $itemto
,如果为真则返回 1,否则返回 0。但问题是它正在逐一分析表2中的元素。这不是我的目标。我想要做的是比较表1的每一行,其中一个有2个项目($item
和$item
)并在整个表2中搜索相应的项目,看看条件是否为真eq 1,否则为0。Perl脚本:
foreach my $itemto (@itemsto){
if (grep {$item2 eq $itemto || $item eq $itemto} @itemsto) {
$turncong = 1;
$insert_turncong->execute($mn, $yr, $item, $item2, $turncong);}
else {
$turncong = 0;
}
}
表格1)
item | item2 | value | mn | yr | mn_yr | item_mn_yr | item2_mn_yr
-------- +--------+--------+----+------+--------+--------------- +---------------
Green | Marble | 140181 | 1 | 1998 | 1-1998 | Green-1-1998 | Marble-1-1998
Green | Tomato | 162785 | 1 | 1998 | 1-1998 | Green-1-1998 | Tomato-1-1998
Lime | Marble | 89307 | 1 | 1998 | 1-1998 | Lime-1-1998 | Marble-1-1998
Lime | Green | 129488 | 1 | 1998 | 1-1998 | Lime-1-1998 | Green-1-1998
Marble | Green | 140181 | 1 | 1998 | 1-1998 | Marble-1-1998 | Green-1-1998
Marble | Marble | 77225 | 1 | 1998 | 1-1998 | Marble-1-1998 | Marble-1-1998
Tomato | Lime | 104345 | 1 | 1998 | 1-1998 | Tomato-1-1998 | Lime-1-1998
Tomato | Green | 162785 | 1 | 1998 | 1-1998 | Tomato-1-1998 | Green-1-1998
表 2) @itemsto
item | yr | mn | item_mn_yr
-------+------+----+--------------
Green | 1998 | 1 | Green-1-1998
Tomato | 1998 | 1 | Tomato-1-1998
当前方案的问题是:表 1 有 1000 行,表 2 有 15 行,结果表是 15000 行。
理想的情况是表 1 我有 1000 行,我唯一想做的就是添加一个结果为 0 或 1 的新列,新的结果表将有一个新列并且仍然有 1000 行。