7

Table1とTable2の2つのテーブルがあります。Table1に含まれていないTable2の個別の行を選択したいと思います。次に例を示します。

  Table1        

   | A  |   | sem|
   ------------------
1. | aa |   | 1 |
   ---------------
2. | bb |   | 1 |
   ----------------
3. | aa |   | 2 |
   -----------------
4. | cc |   | 2 |
   ---------------

Table2

   | B  |
   ------
1. | aa |
   ------
2. | aa |
   ------
3. | bb |
   ------
4. | cc |
   ------
5. | cc |
   ------
6. | ee |
   ------
7. | ee |
   ------

sem = 1の結果の出力のように、sem = 1の場合、この2つのテーブルで一般的ではない行が必要です。

| B |

  1. | cc |
  2. | ee |
4

3 に答える 3

8

あなたはこのようなことを試すことができます。

SELECT B
FROM Table2 b
WHERE NOT EXISTS (
    SELECT *
    FROM Table1 a
    WHERE a.A = b.B)

私が収集できることから、あなたが機能していない理由は、table1とtable2の両方にあるすべての値を取得しているためです。あなたがすべきことは、私が上でしたことのようです。両方のテーブルにあるすべての値を取得し、両方のテーブルのどの値が結果セットに含まれていないかを確認します。これが、サブクエリを設定した理由です。私は自分のSQLに少し錆びているので、私が言ったことを塩分を増やして取ってください。

于 2013-01-28T03:04:00.923 に答える
7

outer joinこれは、 andwhere句を使用して行うことができます。この場合、右外側の結合、私は思います:

SELECT cd.cGenotype
FROM  dbo.TestResults tr right outer join
      dbo.CombinedData cd
      ON (tr.TestResult = cd.cGenotype)
where tr.testresult is null
GROUP BY cd.cGenotype
于 2013-01-28T02:44:56.683 に答える
1
SELECT DISTINCT b.cGenotype
FROM  dbo.CombinedData b 
WHERE NOT EXISTS (SELECT * 
                  FROM dbo.TestResults a 
                  WHERE a.TestResult = b.cGenotype)
于 2013-01-28T02:44:55.233 に答える