哪里有不同的SQL

时间:2017-09-28 08:50:34

标签: sql

我正在尝试将g.house_ID选为Distinct,以便下面的查询返回的值将基于g.house_id而唯一。

因此,如果房屋ID有3个值的记录1.它只返回房屋ID的第1个条目,而不是3行。

SELECT  r.*, g.*
FROM house r, pic_gallery g 
WHERE r.house_id = 1 AND r.house_id = g.house_id

2 个答案:

答案 0 :(得分:0)

如果您想要从图库中显示单张图片(获取单个列),则可以使用简单的子选项来帮助您

SELECT  
  r.*
  , (SELECT TOP(1) PrimaryImage 
     FROM pic_gallery g 
     WHERE r.house_id = 1 AND r.house_id = g.house_id
    )
FROM house r

在您的情况下,您似乎想要加入整个gallery表的行数据如果您只想从子表中选择一行,则需要以某种方式对其进行排序,以便数据库知道哪一行是正确的之一。

SELECT R.*
FROM house R
OUTER APPLY (
    SELECT TOP 1 G.ID,G.Image,G.Owner,G.HouseID
    FROM gallery G
    WHERE G.HouseID = R.HouseID
    ORDER BY G.CreatedDate
) O

此外,分区可能对阅读有用。

就个人而言,我会将其中一个图库行标记为主要行,并使用这样的简单连接。

SELECT * From house R 
LEFT OUTER JOIN gallery G ON R.HouseID = G.HouseID 
WHERE G.PrimaryRow = 1

答案 1 :(得分:0)

尝试使用不同的左连接。

SELECT DISTINCT g.house_id, r.*, g.*
FROM pic_gallery g 
LEFT JOIN house r, 
ON r.house_id = g.house_id
WHERE r.house_id = 1