1

データベースに(Table1.column1とTable1.column2)と別の(Table2.column1とTable2.column2)があり、(Table1.column1とTable1.column2)の値が(Table2.column1とTable2)にない結果を取得したい.column2)?

Table1                          Table2
------------------------        ------------------------
 sid   sname    sclass            rid  rname    rclass
------------------------        ------------------------
| 1 | glass  | a class |        | 1 | glass  | b class |
| 2 | glass  | c class |        | 2 | glass  | c class |
| 3 | ice    | a class |        | 3 | ice    | b class |
| 4 | ice    | b class |        | 4 | ice    | c class |
| 5 | fridge | a class |        | 5 | fridge | a class |
| 5 | fridge | b class |        | 5 | fridge | c class |
------------------------        ------------------------

結果は次のようになります。

Result Table
------------------------
 sid   sname    sclass 
------------------------
| 1 | glass  | a class |
| 3 | ice    | a class |
| 5 | fridge | b class |
------------------------

上で述べたように、これはcontainsメソッドに似ていますが、VB6でこのSQL文字列を使用します。

クラスa、b、cがあります。(ガラス、冷蔵庫など)などのすべてのアイテムには、これらのクラスのいずれかを含めることができるため、table2の組み合わせは結果に含まれないはずです。

私は次のようなSQLクエリでそれをやりたいです:

SELECT * 
  FROM area1 AS table1,
       (SELECT * FROM area2 WHERE blablabla..) AS table2
 WHERE table1.SNAME = table2.RNAME
   AND table1.sclass <> table2.rclass
4

1 に答える 1

2

あなたには必要だleft join

SELECT sid, sname, sclass
FROM table1
    LEFT JOIN table2
    ON table1.sname=table2.rname
    AND table1.sclass=table2.rclass
WHERE rid is null
于 2012-07-31T08:32:32.740 に答える