繁体   English   中英

使用内部联接与0行的子查询进行SQL查询

[英]SQL Query using inner join with a subquery which 0 line

在查询中,我选择了一个不存在的列,因为该列来自联接中的子查询。 (子查询可以给我0行)

因此,在这种情况下,我想选择0而不是“ temp.Quantity”列。

编码:

SELECT
    bx.BX_BoxNum,
    temp.Quantity    -- <- this column
FROM BOX bx
INNER JOIN (SELECT BX_Id, SUM(BX_Quantity) AS Quantity FROM BOX
            WHERE BX_Top_S = 'True' GROUP BY BX_Id) temp
    ON bx.BX_Id = temp.BX_Id
WHERE bx.BX_BoxNum = 10

有时盒子号是空的! 我尝试使用“ BOX n°10-0”代替一行

请你帮助我好吗?

SELECT bx.BX_BoxNum, ISNULL(temp.Quantity, 0)
FROM BOX bx
left outer JOIN (SELECT BX_Id, SUM(BX_Quantity) AS Quantity FROM BOX 
WHERE BX_Top_S = 'True' GROUP BY BX_Id) temp ON bx.BX_Id = temp.BX_Id
WHERE bx.BX_BoxNum = 10

当联接的一侧不返回任何内容时,外部联接允许进行选择。 内部联接必须在联接的两边都有行(如您所见!)。 Google了解LEFT,RIGHT和FULL外连接之间的区别。

SELECT bx.BX_BoxNum, SUM(COALESCE(temp.Quantity, 0)) AS Quantity
FROM BOX bx
    LEFT JOIN BOX temp ON bx.BX_Id = temp.BX_Id AND temp.BX_Top_S = 'True'
WHERE bx.BX_BoxNum = 10
GROUP BY bx.BX_BoxNum

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM