gpt4 book ai didi

mysql - 用等效的 EXISTS() 查询替换 IN() 子查询

转载 作者:行者123 更新时间:2023-11-29 13:01:04 24 4
gpt4 key购买 nike

给定 MySQL 数据库中的两个简单表。

  • 产品(具有属性、prod_id、prod_name ...)
  • product_image(具有属性、product_image_id、prod_id(引用产品表中的 prod_id)、prod_image ...)

这些表之间的关系直观 - 从 productproduct_image 的一对多关系。

<小时/>

我需要从每组产品中具有最大product_image_idproduct_image表中检索结果集(仅prod_image)

以下查询正是这样做的。

SELECT p.prod_image
FROM product_image p
WHERE p.product_image_id IN(SELECT max(pp.product_image_id)
FROM product_image pp
GROUP BY pp.prod_id)

如何使用 EXISTS() 重写此查询?

最佳答案

以下查询遵循您的问题的逻辑,即获取每个 prod_id 的最大 prod_image_id

SELECT p1.prod_image 
FROM product_image p1
WHERE NOT EXISTS(SELECT 1
FROM product_image p2
WHERE p1.prod_id = p2.prod_id
AND p1.product_image_id < p2.product_image_id)

关于mysql - 用等效的 EXISTS() 查询替换 IN() 子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23330480/

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