我對MySQl中的內部聯接有疑問。從我對MySQL的有限理解來看,內部聯接生成的結果表只包含兩個表中存在的行。也就是說,例如,如果table1包含Joe的行和Sally的行,並且table2僅包含Sally的行,則內部聯接將只包含一行:Sally的行。MySQL內部加入結果
例如:
在其中包含2個表的數據庫,
表1(PET)
petName petType
Unicorn Horse
Pegasus Horse
Lion Cat
表2(彩色)
petName petColor
Unicorn white
Unicorn silver
Fish Gold
使用查詢
SELECT * FROM Pet,Color WHERE Pet.petName = Color.petName
爲什麼查詢的結果?
petName petType petName petColor
Unicorn Horse Unicorn white
Unicorn Horse Unicorn silver
爲什麼在表1中只有1個「獨角獸馬」時,第二排中會出現「獨角獸馬」?我是否正確地說MySQL在表1和表2中與術語「獨角獸」相匹配,並且列出了兩個表中具有「獨角獸」一詞的行。然而,由於這樣做會導致
petName petType petName petColor
Unicorn Horse Unicorn white
< NULL > Unicorn silver
MySQL的自動替換在表中的一個,因爲它在查詢中使用的「麒麟」的關鍵字匹配行「麒麟馬」的價值?
如果是這樣,那麼這又是什麼意思呢,因爲MySQL只會在第二行給我多餘的數據,而我沒有這個用處呢?此外,我將能夠通過使用來解決此
SELECT * FROM Pet LEFT JOIN Color
ON Pet.petName=Color.petName
WHERE Pet.petName="Unicorn"?
我碰到這個例子在PHP MYSQL &傻瓜來了,也似乎無法得到它。 如果某種靈魂能夠澄清這一點,我將不勝感激。
SELECT * FROM寵物WHERE EXISTS(SELECT * FROM Color其中Color.petName = Pet.petName)以純英文翻譯成「選擇表Pet中的行(其中列petName中的數據與數據匹配)在表Color中的petName列中?我問這是因爲我還不太確定MySQL的語法。謝謝! –
@ Ken--更新了包含解釋的答案。 –