如果我把我的where子句中,是這樣的:「IN」謂詞在SQL
select col_1, col_2, col_3
from table_1
where col_1 <> col_2;
這將不會返回值在第1列的值不等於值在第2列該行。
我想要做的是確保列1中的每個值都不存在於列2中的任何位置。例如,如果我的表有100行,我想確保第1,2,3行沒有值等出現在列2的100行的任何地方。
什麼是最好的方法來解決這個問題?
什麼,我想這樣做是這樣的:
with table_2 AS(
select col_1
from table_1
)
select *
from table_1
where col_2 NOT IN
(select col_1
from table_2);
這是否做到這一點?
編輯:我正在與一個表有一對多的關係。我想確保「一邊」的價值觀在「多」一邊是無處可去的。
編輯第二部分:我做了這樣的事情,並沒有任何運氣,因爲從第1列中的值,仍處於COLUMN_2,或column_3,或column_4露面,等
Select *
from table_1 as one
where NOT EXISTS
((select *
from table_two as two
where two.column_2 = one.column_1)
AND
two.column_three = one.column_1));
閱讀關於NOT EXISTS:https://msdn.microsoft.com/en-CA/library/ms188336.aspx?f=255&MSPPError=-2147217396 –
IN與'其中一個值'同義' – maSTAShuFu
你是什麼意思「IN與其中一個數值是同義的」?你能否更清楚一點? – LunchBox