0

これが私の問題です:
列の行が次のように見える「Machines」テーブルがありますが、より長くなります:

Microsoft アプリケーション エラー報告

Microsoft アプリケーション エラー報告

Microsoft Office Professional Plus 2010

Microsoft Office OneNote MUI (英語) 2010
Microsoft Office InfoPath MUI (英語) 2010

Microsoft Office Access MUI (英語) 2010

Microsoft Office Shared Setup Metadata MUI (英語) 2010

Microsoft Office Excel MUI (英語) 2010

Microsoft Office 共有 64 ビット セットアップ メタデータ MUI (英語) 2010

そして、次のような列の行を持つ「例外」テーブルがあります。

Microsoft Office OneNote MUI (英語) 2010

Microsoft Office InfoPath MUI (英語) 2010

私がやりたいのは、最初のテーブルに存在するテキストのみを取得し (2 番目のテーブルには存在しない)、それを 3 番目のテーブルに入れることです。

よくわからない場合は申し訳ありませんが、英語で最善を尽くしました.. よろしくお願いします。

編集:これが私の行の外観です。クリック

4

3 に答える 3

2

Machines にある行 (Exceptions にある行を除く) が必要であると仮定すると、次のように選択できます。

select *
from Machines
where columnName not in (select columnName from Exceptions)

次に、次のように insert into を使用してそれらを挿入できます (Machines と newTable が同じ列であると仮定します)。

insert into newTableName
select *
from Machines
where columnName not in (select columnName from Exceptions)

それらに異なる列がある場合は、それらを選択できます..


それらはすべて同じ列と行にあるため、like存在するかどうかを確認し、存在する場合replaceは必要な部分を削除するために使用する必要があります。

于 2012-06-05T13:27:23.810 に答える
1

あなたが望むのは次のとおりだと思います:

select m.line
from (select distinct line
      from Machines m
     ) left outer join
     Exceptions e
     on m.line = e.line
where e.line is NULL

私はあなたの質問を、マシンにはテキスト行が含まれる行がたくさんあると解釈しました。例外にないマシンの個別の行が必要です。

于 2012-06-05T13:30:18.207 に答える
0

私の質問は古いことは知っていますが、プログラム全体をやり直したので、別の答えを見つけました。それが誰かを助けることができるなら:

for (i = 0; i < SplitMachine.Length; i++)
            {
                for (j = 0; j < SplitExceptions.Length; j++)
                {
                    if (string.Compare(SplitMachine[i],SplitExceptions[j]) == 0)
                    {
                        ListMachines.RemoveAt(i);
                    }
                }
            }

SplitMachineは私のソフトウェアの文字列配列です。StringExceptionsは表示したくないソフトウェアの文字列配列です。したがって、SplitMachineの文字列がSplitExceptionsの文字列と一致する場合は、SplitMachineの関連する文字列を削除します。

それが明確で、誰かを助けることができることを願っています。

于 2012-06-12T08:00:29.700 に答える