從MySQL 中具有不等行的兩個表中進行選擇
在具有兩個表(類別和產品)的在線在購物資料庫中,常見任務是檢索所有類別以及每個類別中的最低和最高產品價格。然而,簡單的查詢會遇到一個問題:沒有產品的類別被排除在結果之外。
要解決此挑戰,有必要使用外部連接而不是隱式連接。即使在另一表(產品)中沒有對應的行,外連接也允許檢索一個表(在本例中為類別)中的行。具體來說,這裡使用左連接,以便所有類別都包含在結果中。
此外,為了將沒有產品的類別的空值替換為 0,使用了 IFNULL() 函數。此函數採用第一個參數中提供的表達式的值,如果為 null,則傳回第二個參數中指定的值。
更新的查詢語法如下:
SELECT sc.*, IFNULL(MIN(s.price), 0) AS minp, IFNULL(MAX(s.price), 0) AS maxp FROM categories AS sc LEFT JOIN products AS s ON s.ownerid = sc.id GROUP BY sc.id
透過使用外連接和IFNULL() 函數,我們可以檢索所有類別,並確保沒有產品的類別用minp 和maxp 值為0表示。此查詢有效地處理了選擇的需要來自兩個表,即使一個表中並非所有行在另一個表中都有對應的條目。
以上是如何在 MySQL 中檢索所有類別及其最低/最高產品價格,即使某些類別沒有產品?的詳細內容。更多資訊請關注PHP中文網其他相關文章!