首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过避免冗余来编写更好的SQL代码

通过避免冗余来编写更好的SQL代码
EN

Stack Overflow用户
提问于 2011-12-08 19:55:25
回答 2查看 285关注 0票数 1

我有一个这样的sql查询:

代码语言:javascript
复制
SELECT Code 
FROM xyz 
WHERE xyz.Code  IN  ('20','10') AND price = 
    (select min(price) FROM xyz  WHERE CODE IN  ('20','10'));

查询后期望输出: 10

表xyz :-

售价:1 2 1

电码: 10 20 30

有没有更好的方法来写这条sql语句?因为在我的sql语句中"WHERE CODE in ('20','10')“被重复了两次,而我试图避免调用该语句两次

EN

回答 2

Stack Overflow用户

发布于 2011-12-08 19:57:12

如果只想接收一行,可以使用ORDER BY和LIMIT:

代码语言:javascript
复制
SELECT Code
FROM xyz
WHERE xyz.Code IN ('20','10')
ORDER BY price
LIMIT 1
票数 6
EN

Stack Overflow用户

发布于 2011-12-08 20:00:25

您可以使用join而不是where in条件进行筛选。这将允许您让连接表重用第一个表中的条件。

代码语言:javascript
复制
select  Code 
from    (
        select  *
        from    xyz
        where   code in ('20','10')
        ) t1 
inner join
        (
        select  code
        ,       min(price) as min_price
        from    xyz
        group by
                code
        ) filter
on      filter.code = t1.code
        and filter.min_price = t1.price
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8430657

复制
相关文章

相似问题

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