SQL语句学习汇总(Mysql)

一、如下user表,查询表中每人重复出现的次数

idnamemobile
1老大13812340010
2老二13812340020
3老二13812340020
4老三13812340030
5老四13812340040
6老五13812340050
7老五13812340050
SELECT mobile,COUNT(*) 
FROM user 
GROUP BY mobile HAVING COUNT(*) > 1;

 查询结果:

mobileCOUNT(*)
138123400101
138123400202
138123400301
138123400401
138123400502

循环嵌套使用:

SELECT * 
FROM user 
WHERE mobile IN (SELECT mobile FROM user GROUP BY mobile HAVING COUNT(*) > 1)
ORDER BY mobile DESC;

二、两张表的内联操作

SELECT v.create_time,o.*
FROM ins_order o 
INNER JOIN ins_order_visit v ON o.order_no = v.order_no AND v.create_time > '2020-01-10';

三、三张表的内联操作(io表为主表,内联iov表,且内联iovi表,因此只有同时满足两对内联条件的记录才会显示)

SELECT io.*
FROM ins_order io 
INNER JOIN ins_order_visit iov ON io.order_no = iov.order_no AND iov.del_flag = '0'
INNER JOIN ins_order_visit_idea iovi ON io.cont_no = iovi.cont_no AND iovi.del_flag = '0';

四、根据出生日期范围查询内部用户列表

    <!-- 根据出生日期范围查询内部用户列表 -->
    <select id="selectUserListByDateRange" resultMap="BaseResultMap">
        SELECT
            bn.name,bn.sex,bn.department
        FROM
            bn_inner_user bn
        WHERE
            substring(bn.card_no,7,8) &gt;= #{minDate} and substring(bn.card_no,7,8) &lt; #{maxDate}
    </select>

 五、删除表中多余的记录

DELETE FROM ins_order_visit_idea
WHERE cont_no IN ( SELECT cont_no FROM ( SELECT cont_no FROM ins_order_visit_idea GROUP BY cont_no HAVING COUNT( cont_no ) > 1 ) e )
  AND Id NOT IN ( SELECT Id FROM ( SELECT MIN( Id ) AS Id FROM ins_order_visit_idea GROUP BY cont_no HAVING COUNT( cont_no ) > 1 ) t );

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值