如何判斷多個字段組成的關鍵字在另外一張表中是否存在

2022-04-08 06:42:17 字數 1050 閱讀 7874

如何判斷多個字段組成的關鍵字在另外一張表中是否存在

老帥(20141107)

1.首先判斷乙個關鍵字在另外一張表中是否存在很容易!

select * from a

where a.id

inselect b.id

from b

2.如果判斷的關鍵字有多個字段構成怎麼辦呢?

你不能在in中使用多個字段。如下查詢:

select * from a

where (a.id1, a.id2)

inselect b.id1, b.id2

from b

這不會正常工作,違反了sqlserver標準。

3.要解決這一問題,可以用exists來代替in!

select * from a

where exists

select null

from b

where a.id1 = b.id1

and a.id2 = b.id2

4.值得注意的是,這僅適用於in,而非not in!

not in與not exists在處理空值的方式上略有不同。

select *

from a

where (a.id1, a.id2) not in

select b.id1, b.id2

from b

這不會正常工作,違反了sqlserver標準。要模仿not in的查詢如下:

我們必須使用以下查詢:

select *

from a

where not exists

select null

from b

where a.id1 = b.id1

and a.id2 = b.id2

and not exists

select null

from b

where b.id1 is null

or b.id2 is null

第二個謂詞確保b在id1和id2中不會有空值,任何這樣的值都會讓原始查詢不會返回結果!

如何優化多個關鍵字

比如像點石會員zeroth在這個帖子裡問到的 雲南旅遊這個詞很大,下面好的詞還有,昆明旅遊,麗江旅遊,大理旅遊,騰衝旅遊,西雙版納旅遊,香格里拉旅遊,臨滄旅遊,這些好的詞,我該怎樣把他們聯絡起來呢?他們都屬於雲南旅遊。第個旅遊 都會有這些版塊,但我覺得他們幾乎沒什麼聯絡,所以根本出不來效果。怎樣才能...

如何優化多個關鍵字

雲南旅遊這個詞很大,下面好的詞還有,昆明旅遊,麗江旅遊,大理旅遊,騰衝旅遊,西雙版納旅遊,香格里拉旅遊,臨滄旅遊,這些好的詞,我該怎樣把他們聯絡起來呢?他們都屬於雲南旅遊。第個旅遊 都會有這些版塊,但我覺得他們幾乎沒什麼聯絡,所以根本出不來效果。怎樣才能把他們更好的聯絡起來呢?或者說是把乙個站上的這...

grep和sed匹配多個字元關鍵字的用法

gnu sed和unix sed 寫法不一樣 grep hello world file output 或者用擴充套件正則 grep e hello world file output 如果grep用的是 e 小寫e引數,需要加上反斜槓轉移,即 grep e hello world file out...