首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将IN()子查询替换为等效的IN()查询

问将IN()子查询替换为等效的IN()查询
EN

Stack Overflow用户
提问于 2014-04-27 23:53:29
回答 1查看 94关注 0票数 0

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

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

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

我需要从product_image表中检索一个结果集(仅为prod_image),该表在中具有最大product_image_id,每组产品。

下面的查询正是这样做的。

代码语言:javascript
复制
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()重写此查询?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-28 01:00:24

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

代码语言:javascript
复制
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) 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23330480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档