我有2个表,Property和PropertyImage。 1物业有多个图像
我需要获取所有属性,每个属性只需要1个PropertyImage。
有谁知道如何实现这一目标?
Property: PropertyID, Name
PropertyImage: PropertyImageID, PropertyID, Source, Type
由于
答案 0 :(得分:6)
下面是一个示例,其中选择了Property中的所有记录以及PropertyImage中的最后一条记录,假设id列是标识列,而最后一条记录是您需要的记录。您需要根据确切的列名称和要求进行调整。
SELECT p.PropertyID, p.Name, pi.PropertyImageID, pi.Source, pi.Type
FROM Property p
INNER JOIN PropertyImage pi
ON pi.PropertyImageId = (SELECT MAX(sub.PropertyImageId)
FROM PropertyImage sub
WHERE sub.PropertyId = p.PropertyId)
编辑:在选择
中添加了列名答案 1 :(得分:2)
;WITH PI
AS (SELECT *,
ROW_NUMBER() OVER (PARTITION BY PropertyID
ORDER BY (SELECT 0)) AS RN
FROM PropertyImage)
SELECT P.PropertyID,
P.Name,
PI.PropertyImageID,
PI.Source,
PI.Type
FROM Property P
JOIN PI
ON P.PropertyID = PI.PropertyID
WHERE PI.RN = 1
答案 2 :(得分:0)
这样做的一种方法是
SELECT P.PropertyID, P.Name, max(PI.PropertyImageID)
from Property P
INNER JOIN PropertyImage PI
ON P.PropertyID = PI.PropertyID
GROUP BY P.PropertyID, P.name
示例数据和所需输出将有助于提供更完整的答案。
答案 3 :(得分:0)
尝试 -
Select Property.PropertyID
FROM Property
INNER JOIN PropertyImage pi on pi.PropertyID = Property.PropertyID
WHERE pi.PropertyImageID = (SELECT MAX(PropertyImageID) FROM PropertyImage WHERE PropertyID = Property.PropertyID)
这应该只获得具有最高'属性图像ID'值的属性图像。您可以根据需要更改MAX(PropertyImageID)
逻辑。