2012-05-05 8 views
-7
SELECT c1.address 
FROM users c1, users c2 
WHERE c1.address = c2.address 
AND c2.first_name = 'John' 

我不明白第三行是幹什麼的。我不明白它,因爲這個查詢返回兩個單獨的地址,即使它說地址1必須匹配地址2?元組變量 - 有人可以向我解釋以下SQL語句

我錯過了什麼?

編輯:

該表有三個記錄的用戶。其中的兩個用戶共享同一個名字「約翰」

編輯:

還有,爲什麼我們需要這樣做,而不是下面?

SELECT address 
FROM users 
WHERE first_name = 'John' 
+0

據我所知,返回一個地址,而不是兩個。 –

+1

向我們展示查詢的表結構+輸出。 – gdoron

+3

你應該做一些基本的SQL教程,它會比在這裏詢問更有幫助。 – gdoron

回答

2

考慮到您只選擇了address,這些選擇是等同的。它返回兩個地址,因爲有兩個「Johns」。

加入地址可以讓你確定誰與約翰生活在一起其他。例如:

SELECT c2.first_name 
FROM users c1, users c2 
WHERE c1.address = c2.address 
AND c1.first_name = 'John' 
AND c2.first_name != 'John' 

會告訴你與「約翰」住在一起的每個人的姓名。

+0

「只選擇地址」而不是什麼? – code511788465541441

+0

@ user521180:選擇其他字段,例如名稱。 –

+0

即使我選擇地址和名稱,他們仍然返回相同的東西。那麼像c1.address等這樣做有什麼意義呢? – code511788465541441

相關問題