Mysql

在兩個內聯視圖上使用左連接的 MySQL 查詢不會在第二個視圖中返回沒有值的行

  • February 14, 2017

出於某種原因,當我執行下面的程式碼時,我只會得到兩個視圖中都有 sku 的結果。我認為這應該在第一個視圖中為我提供所有內容,並在第二個視圖中添加內容(如果存在)。如果 oli.sku 不在 po 視圖中,我希望能夠使用 0 作為下面 po.tot2 的值。

SELECT
  oli.sku,
  oli.tot as oli_tot,
  po.tot2 as po_tot,
  oli.tot - po.tot2 as diff 
FROM (
  SELECT
     sku,
     COALESCE(SUM(quantity),0) as tot
  FROM orderlineitems
  GROUP BY sku
) oli
LEFT JOIN (
   SELECT
      sku,
      COALESCE(SUM(amount),0) as tot2
   FROM poentries
   GROUP BY sku
) po
ON oli.sku = po.sku
WHERE oli.tot - po.tot2 > 0;

po在 WHERE 子句中使用,實際上是說它不能為空。

也許使用: IFNULL(po.tot2,0) 而不是 po.tot2

引用自:https://dba.stackexchange.com/questions/63300