SQL Select Return Default Value If Null

前端 未结 5 1406
伪装坚强ぢ
伪装坚强ぢ 2021-01-01 10:20

Database: MS SQL 2008

SELECT Listing.Title, Listing.MLS, Pictures.PictureTH, Pictures.Picture, Listing.ID 
FROM Listing INNER JOIN Pictures          


        
5条回答
  •  长情又很酷
    2021-01-01 11:24

    Two things:

    1. Use left outer join instead of inner join to get all the listings, even with missing pictures.
    2. Use coalesce to apply the default

      SELECT Listing.Title
          , Listing.MLS
          , Pictures.PictureTH
          , coalesce(Pictures.Picture, 'default.jpg') as Picture
          , Listing.ID  
      FROM Listing 
      LEFT OUTER JOIN Pictures 
          ON Listing.ID = Pictures.ListingID 
      

    EDIT To limit to one row:

    SELECT Listing.Title
        , Listing.MLS
        , Pictures.PictureTH
        , coalesce(Pictures.Picture, 'default.jpg') as Picture
        , Listing.ID  
    FROM Listing 
    LEFT OUTER JOIN Pictures 
        ON Listing.ID = Pictures.ListingID 
    WHERE Pictures.ID is null
    OR Pictures.ID = (SELECT MIN(ID) 
        FROM Pictures 
        WHERE (ListingID = Listing.ID))) 
    

提交回复
热议问题