SQL查询不等于行

时间:2017-07-11 03:35:30

标签: sql

有两个表 table1 table2 我希望加入这些表,并希望检索不等于 table1 的行是两个表中的行。

表1

override func viewDidLoad() {

    super.viewDidLoad()

    let concurrentQueue = DispatchQueue(label: "test", attributes: .concurrent)

    concurrentQueue.async {

        while true{
            print("hello")
            sleep(1)
        }

        while true{
            print("world")
            sleep(1)
        }

    }

}

表2

ID   NAME   Dept
 1   B     Finance
 2   R     HR
 3   B     CDU

它不能正常工作

ID  PASSPORT
1   Yes
2   No

预期结果

SELECT table1.ID, table1.NAME, table1.Dept FROM TABLE1 INNER JOIN TABLE2 ON 
TABLE1.ID != TABLE2.ID

2 个答案:

答案 0 :(得分:3)

使用left join to和where子句来获取仅在table1中的值

select
  table1.id,
  table1.name,
  table1.Dept
from
  table1
  left join table2 on table2.id = table1.id
where
  table2.id is NULL;

以上查询的输出:

output

如果找不到第二个表中的记录,则左连接将插入空值。因此,添加where子句以获取在第二个表中找不到的所有结果。

以下是使用left join https://www.w3schools.com/sql/sql_join_left.asp

的更好说明

答案 1 :(得分:1)

尝试此查询 -

SELECT ID
    ,NAME
    ,Dept
FROM TABLE1
WHERE ID NOT IN (
        SELECT DISTINCT ID
        FROM Table2
        WHERE ID IS NOT NULL
        );