我有2個與值(1),(2) 它是EXISTS功能混淆?
該查詢表
- T1(COL):
SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t1 WHERE t1.col >= 2)
從
t1
返回兩個行,這是可以的,因爲EXISTS
至少返回一行,所以where子句變爲TRUE。現在第二查詢
SELECT * FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE t1.col = t2.col)
這僅返回1行。爲什麼?在這種情況下,
EXISTS
還返回至少一行,那麼爲什麼不從「t1」表返回的所有行呢?EXISTS()
函數是如何工作的?
'EXISTS'正在評估't1'中每一行的條件。 't2'中沒有匹配't1.col = 2'的地方。 –