2010-09-07 100 views
2

親愛的all.i新手在網絡編程和直到現在我仍然有學習MySQL語法。 現在我開始使用LEFT JOIN方法。我知道這種方法用於在兩個或多個表格之間進行歸一化。我在SO發佈了一個問題,然後我收到一個Answer,這讓我感到困惑。我已經修改了這個答案,但我仍然感到困惑,因爲它僅僅爲一個表使用LEFT JOIN。是否可以在一張表中使用LEFT JOIN在MySQL中學習LEFT JOIN

回答

4

你可以LEFT JOIN一個表本身,就像你可以JOIN表本身。您的目的通常會有所不同,因爲LEFT JOIN的特定特性確保了在右側沒有對應行存在時的輸出行;當然,您可以通過檢查行的「其他部分」(通常來自右側表格的部分)的NULL來選擇那些專門已被選擇的行。

考慮例如表Product用,列ID,主鍵NameCategory,和Cost;您需要有關其類別中最便宜的產品的信息。然後...:

SELECT P1.Name, P1.Category, P1.Cost 
    FROM Product AS P1 
    LEFT JOIN Product AS P2 
    ON (P1.Category = P2.Category and P1.Cost > P2.Cost) 
    WHERE P2.ID IS NULL 

是一個例子是「左的連接表的本身」,這將回答「你要」規範(如果不止一個項目在一個類別等,成本最低你會得到他們全部 - 查詢實際上給你的物品,使其在類別中沒有項目是便宜和沒有檢查項目等於成本;-)。