码迷,mamicode.com
首页 > 其他好文 > 详细

如何在子查询中实现多列过滤

时间:2020-02-02 17:33:59      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:常见   use   div   sel   查询   去除   重复记录   select   技术   

什么是子查询:

  当一个查询是另外一个查询的条件,称之为子查询。

常见子查询使用场景:

  1.使用子查询可以避免由于子查询中的数据产生的重复。

  2.使用子查询更符合语义,更好理解

-- 子查询user_id 重复时,不会导致结果重复 
select user_name from qujing where id in (select user_id from user_kills);

技术图片

-- 使用join时,会重复
select a.user_name from qujing a join user_kills b on a.id =b.user_id;

技术图片

-- 使用distinct去除重复记录
select distinct a.user_name from qujing a join user_kills b on a.id =b.user_id;

 

 

如何在子查询中实现多列过滤:

步骤1:

SELECT
    user_id,
    MAX(kills)
FROM
    user_kills
GROUP BY
    user_id

技术图片

 步骤2:

SELECT
    a.user_name,
    b.timestr,
    kills
FROM
    qujing a
JOIN user_kills b ON a.id = b.user_id
WHERE
    (b.user_id, b.kills) IN (
        SELECT
            user_id,
            MAX(kills)
        FROM
            user_kills
        GROUP BY
            user_id
    );

技术图片

 

如何在子查询中实现多列过滤

标签:常见   use   div   sel   查询   去除   重复记录   select   技术   

原文地址:https://www.cnblogs.com/ooo0/p/12252841.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!