VVL1295

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

SQL 编写例子

  1,去除一个表的重复记录:

DELETE
FROM
    enterprise_user
WHERE
    id NOT IN (
        SELECT
            t
        FROM
            (
                SELECT
                    min(id) AS t
                FROM
                    enterprise_user
                GROUP BY
                    NAME
            ) AS T
    )

  至于有一个“冗余”的 select 语句的原因是:MySQL 不允许在修改表的时候查表,而多了一个 select 语句就创建了临时表,就不是修改表的时候查表;

2,行列转换

  链接:http://blog.chinaunix.net/uid-7692530-id-2567582.html;

  

SELECT
    IFNULL(c1, 'total') AS total,
    Sum(IF(c2 = 'B1', c3, 0)) AS B1,
    Sum(IF(c2 = 'B2', c3, 0)) AS B2,
    Sum(IF(c2 = 'B3', c3, 0)) AS B3,
    Sum(IF(c2 = 'B4', c3, 0)) AS B4,
    Sum(IF(c2 = 'total', c3, 0)) AS TOTAL
FROM
    (
        SELECT
            c1,
            IFNULL(c2, 'total') AS c2,
            SUM(c3) AS c3
        FROM
            tx
        GROUP BY
            c1,
            c2 WITH ROLLUP
        HAVING
            c1 IS NOT NULL
    ) AS A
GROUP BY
    c1 WITH ROLLUP

  这里要注意,查询出来的不是一定要是表里面的数据,可以数据运算得到的结果;

  还有,有理解分组查询,分组查询就是要配合合计函数使用,不然没有意义;分组查询的过程是这样的,先分组,然后对每组都进行运算,然后把重复的组去掉;

posted on 2016-10-22 09:49  bobo2018  阅读(143)  评论(0)    收藏  举报