如何判斷多個字段組成的關鍵字在另外一張表中是否存在
老帥(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...