MySQL工作总结

1.   有个需求是关于如果总流量为null,就把总流量的值改成0。

解决方案

CASE 

WHEN

THEN

ELSE

        END

 

Eg:SELECT

CASE 

WHEN flowSize IS NULL

THEN 0

ELSE flowSize  

END

FROM m_flow_detail_record;

2.有个需求是左表右表全连接就是full join,但是mysql是不支持full join。

有于mysql不支持,我们只能用left join union right join解决这个问题。

注:用union而不用union all,因为union会去重。

   SELECT

                            case 

WHEN mfdr.mvnoCode IS NULL 

THENcc.mvnoCode 

ELSE mfdr.mvnoCode   

END ASmvnoCode

           FROM m_flow_detail_record mfdr LEFT JOINcooperation_country cc ON

                                 mfdr.mvnoCode= cc.mvnoCode AND cc.countryCode=mfdr.visitCountry

           GROUP BY mfdr.imei,mfdr.visitCountry

           UNION

           SELECT

                            case 

WHEN mfdr.mvnoCode IS NULL 

THENcc.mvnoCode   

END AS mvnoCode

           FROM m_flow_detail_record mfdr RIGHT JOINcooperation_country cc

                                      ON mfdr.mvnoCode = cc.mvnoCode AND cc.countryCode=mfdr.visitCountry

           GROUP BY mfdr.imei,mfdr.visitCountry

3.有个需求是要先根据权重排序,权重一样就根据自动增长的id排序。

select code, name from a order by A desc, B desc; MySQL会先以A进行降序排序,在A进行降序排序该基础上,再使用B进行降序排序。

4.有个需求是要复制一张临时表,对临时表进行修改。

复制旧表的数据到新表(假设两个表结构不一样)

INSERT INTO 新表(字段1,字段2,.......) SELECT 字段1,字段2,...... FROM 旧表


5.联合主键排序问题
场景:主键并不是id,主键是imei,mac,type,addId
SELECT * FROM t_collection tc;
        SELECT * FROM t_collection tc ORDER BY imei  ASC , mac ASC, tc.type ASC, adId ASC;
 上面这两个语句结果其实是等价的,也就是说他先根据imei升序再根据mac升序,再根据type升序,再根据addId升序排列。


猜你喜欢

转载自blog.csdn.net/xiaojiahao_kevin/article/details/52983731