我正在使用MySql。
我有 2 个表,一个是带有主键 propertyId 的名称和数据列表。
表 2 包含具有主键 propertyImageId 的图像。
每个 propertyId 可能有多个图像或根本没有图像。
我需要获取属于agentId = 1的所有propertyId的列表,无论它是否有图像。
'SELECT a.*, b.*
FROM property a LEFT OUTER JOIN property_images b
ON a.propertyId = b.propertyId
INNER JOIN
( SELECT propertyId, MAX(created) maxCreated
FROM property_images
GROUP BY propertyId) c
ON b.propertyId = c.propertyId ANd b.created = c.maxCreated
WHERE agentId = 1 ');
我正在尝试此处提供的类似解决方案MySQL INNER JOIN 仅从第二个表中选择一行 https://stackoverflow.com/questions/12526194/mysql-inner-join-select-only-one-row-from-second-table
但是,如果图像存在,它仅返回 propertyId。我可以做什么,以便无论 property_images 是否存在,它都会返回 property 中的所有 propertyId?
一直致力于此,任何帮助将不胜感激。谢谢你!!
您可以按如下方式重写查询,内部查询为每个属性 id 获取具有最高创建列值的单个图像
SELECT
a.*,
b.*
FROM
property a
LEFT JOIN
(SELECT
c.*
FROM
property_images c
LEFT JOIN property_images d
ON c.propertyId = d.propertyId
AND c.created < d.created
WHERE d.propertyId IS NULL) b
ON a.propertyId = b.propertyId
WHERE a.agentId = 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)