假設我有兩個表Gardners table
和Plantings table
。SQL連接如何實際工作?
假設我的查詢是:
SELECT gid, first_name, last_name, pid, gardener_id, plant_name
FROM Gardners
INNER JOIN Plantings
ON gid = gardener_id
我想知道它究竟是如何工作的內部?
按我的理解,在每一個join
條件:
- 從
Gardner Table
每一行都將與Plantings Table
每一行進行比較。如果條件匹配,則會打印出來。我的理解是否正確?
在程序方面,如果你認爲:
for i in [Gardners Table]:
for j in [Plantings Table]:
if i.id == j.garderner id:
print <>
現在假設,如果你的查詢是一樣的東西:
User(uid,uname,ucity,utimedat)
Follows(uid,followerid) // uid and followerid are pointing to `uid` of `User`.
SELECT U.uid, U.uname FROM User U1 JOIN Follows F,User U2 WHERE
F.followerid = U2.uiddate AND U2.ucity = 'D'
如何連接條件,將內部工作在這裏嗎?是不是等同於:
for i in [USER]:
for j in [Follows]:
for k in [USER]:
if condition:
print <>
你的理解似乎是正確的。但是我會清理你的查詢來使用別名,以便清楚每列所屬的表。 –
您能否看到我的更新! – python
尋找將用於選擇和連接的算法。你能否詳細說明這個意義! – python