gpt4 book ai didi

mysql - 返回第一个表中的所有数据,如果存在,则仅返回第二个表中的 1 个数据

转载 作者:行者123 更新时间:2023-11-29 02:12:40 26 4
gpt4 key购买 nike

我正在使用 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 select only one row from second table

但是,它仅在图像存在时返回 propertyId。我该怎么做才能使它返回属性中的所有 propertyId 而不管 property_images 是否存在?

一直致力于此,任何帮助将不胜感激。谢谢!!

最佳答案

您可以按如下方式重写您的查询,内部查询为每个具有最高创建列值的属性 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

关于mysql - 返回第一个表中的所有数据,如果存在,则仅返回第二个表中的 1 个数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47575573/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com