返回左表中的所有行,以及右表

时间:2016-09-08 21:32:17

标签: sql sql-server

W3Schools的

  

LEFT JOIN:返回左表中的所有行以及匹配的行   从右表

目标:从右表中添加一列

挑战:右表有很多重复的行

目标:希望联接返回左表中的确切行数,或者换句话说,右表中不同的匹配行

示例更新

每个图像的客户太多,因此可以重复单个ImageID。我想从客户方面返回一个。

SELECT Images.ImageID, Customers.BooleanColumn 
FROM Images
LEFT JOIN Customers
ON Images.ImageID = Customers.ImageID

2 个答案:

答案 0 :(得分:0)

如果要根据ImageID和BooleanColumn对结果集进行分组,请使用以下脚本。

    SELECT Images.ImageID, Customers.BooleanColumn 
    FROM Images
        LEFT JOIN Customers
             ON Images.ImageID = Customer.ImageID
   Group by  Images.ImageID, Customers.BooleanColumn

如果您想检查链接到ImageID的至少一个客户,请使用以下任何一种脚本。

     SELECT DISTINCT ImageID
          , ( case when Customers.ImageId is null Then 0 Else 1) BooleanValue
     FROM Images
         LEFT JOIN Customers
             ON Images.ImageID = Customers.ImageID

OR

    SELECT ImageId,
                ISNULL (  (Select 1 from customers c
                    Where c.imageId=I.imageid),0)BooleanValue 
    FROM Images I

答案 1 :(得分:0)

仍然没有可用的样本数据或所需的结果。这些被认为是诸如此类在线问题的基本要素。因此,此代码未经测试,但它应该提供我认为您正在寻找的内容。

select i.ImageID
    , c.BooleanColumn
from Images i
outer apply
(
    select top 1 BooleanColumn
    from Customers c2
    order by c2.CustomerID --or whatever column you need for ordering
) c