多くの「関連する」質問が表示されますが、この特定のシナリオに答えるのを見たものはありません。
SQLselectステートメントから生成された結果セットを解析するwhile/forループ中に、前の行に同じフィールドデータが含まれている場合(最初のフィールドであるか、 x番目のフィールド)?
たとえば、2つの行が次の場合:
('EML-E','jsmith@mail.com','John','Smith')
('EML-E','jsmith2@mail.com','John','Smith')
'EML-E'が両方の行で同じであるという事実に基づいて、最初の行のみを印刷するための最良の方法は何ですか?
今、私はこれをやっています:
- 最初のフィールド(私のシナリオに固有)を2要素配列に格納する(dupecatch [1])
- dupecatch [0] = dupcatch [1]かどうかを確認します(重複-'s'を使用してループをエスケープします)
行が処理された後、dupecatch [0] =dupecatch[1]を設定します
while ($DBS->SQLFetch() == *PLibdata::RET_OK) { $s=0; #s = 1 to escape out of inside loop while ($i != $array_len and $s==0) { $rowfetch = $DBS->{Row}->GetCharValue($array_col[$i]); if($i==0){$dupecatch[1] = $rowfetch;} #dupecatch prevents duplicate primary key field entries if($dupecatch[0] ne $dupecatch[1]) { dosomething($rowfetch); } else{$s++;} $i++; } $i=0; $dupecatch[0]=$dupecatch[1]; }