首页 文章

如何使用vb6中的sql在两个不同的表上创建包含多个列的比较方法

提问于
浏览
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

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
    

相关问题