の比較に基づいて、表2に含まれていないTABLE1内の行を見つけます。私は両方のテーブルの2つの列を比較して、最初の行にある行を検索しますが、もう一方の行は検索しません。今のところ私はLEFT JOIN
を2つの列に使用しています。私は、ジャンクデータを一時テーブルとメソッドの作品が、私はそれが実際に動作するかどうかを検証することはできませんので、私の本番データ・セットは、行をたくさん持っている上でテスト。私は3列を持つ2つのテーブルを持つ2つの列
CREATE TABLE table1(
[Timestamp] [date],
[name] [varchar](50) NULL,
[value] [varchar](50) NULL
)
CREATE TABLE table2(
[Timestamp] [date],
[name] [varchar](50) NULL,
[value] [varchar](50) NULL
)
。
INSERT INTO table1 VALUES ('2017-09-10', 'a', 'one'),
('2017-01-19', 'a', 'two'),
('2016-12-07', 'a', 'three'),
('2016-11-15', 'b', 'four'),
('2016-10-19', 'b', 'five'),
('2017-07-09', 'b', 'six'),
('2016-01-31', 'c', 'seven'),
('2016-12-15', 'd', 'eight');
INSERT INTO table2 VALUES ('2016-12-15', 'a', 'two'),
('2016-06-20', 'b', 'four'),
('2017-04-09', 'b', 'five'),
('2016-03-03', 'b', 'six'),
('2016-03-24', 'c', 'seven'),
('2016-07-04', 'e', 'nine'),
('2016-10-24', 'f', 'ten'),
('2016-11-06', 'g', 'eleven')
。
SELECT * FROM table1
| Timestamp | name | value |
|------------|------|-------|
| 2017-09-10 | a | one |
| 2017-01-19 | a | two |
| 2016-12-07 | a | three |
| 2016-11-15 | b | four |
| 2016-10-19 | b | five |
| 2017-07-09 | b | six |
| 2016-01-31 | c | seven |
| 2016-12-15 | d | eight |
SELECT * FROM table2
| Timestamp | name | value |
|------------|------|--------|
| 2016-12-15 | a | two |
| 2016-06-20 | b | four |
| 2017-04-09 | b | five |
| 2016-03-03 | b | six |
| 2016-03-24 | c | seven |
| 2016-07-04 | e | nine |
| 2016-10-24 | f | ten |
| 2016-11-06 | g | eleven |
。
SELECT table1.name, table1.value, IIF(table2.Timestamp IS NULL, 'missing', 'not missing') AS 'status' FROM table1 LEFT JOIN table2 ON table1.name = table2.name AND table1.value = table2.value
| name | value | status |
|------|-------|-------------|
| a | one | missing |
| a | two | not missing |
| a | three | missing |
| b | four | not missing |
| b | five | not missing |
| b | six | not missing |
| c | seven | not missing |
| d | eight | missing |
。
DROP TABLE table1
DROP TABLE table2
私には罰金です。私は予約語を使うのは良い方法ではないので、あなたの実際のテーブルでは、より良いカラム名を持つことを願っています。 –
名前と値の両方がNULLを許可します。あなたのサンプルデータにはnullがありません。それらをテストしましたか?あなたのコードはあなたが望むことをしますか? –
は私の実際のデータでは、null'なので 'ことはできませんも任意の' null'sがあるでしょう。私はちょうど質問のために一緒に迅速に一緒に投げた。このコードは小さなテストテーブルで動作しますが、私の大きな生産テーブルで動作することを確認する信頼できる方法はありません。だから私はここで検証を受けるように求めていた。 – IMTheNachoMan