隨筆-67  評論-522  文章-0  trackbacks-0
              MySQLSQL語句寫法,除了那些基本的之外,還有一些也算比較常用的,這里記錄下來,以便以后查找。
              好記性不如爛筆頭,這話說的太有道理了,一段時間不寫它,還真容易忘記。大家不要糾結(jié)這些SQL語句包含的業(yè)務(wù)或是其它問題,本文只是一篇筆記而已。

              將數(shù)據(jù)從T1表導(dǎo)入到T2
          INSERT INTO T2 (C1,C2) SELECT C1,C2 FROM T1 [WHERE C1 = XX AND C2 = XX ORDER BY C1]

              使用T2表的NAME來更新T1表的NAME
          UPDATE T1 AS A, T2 AS B SET A.NAME = B.NAME WHERE A.TID = B.ID

              兩表的關(guān)聯(lián)更新
          UPDATE T_ROLE_USER AS A,
           (
              SELECT
                  ID
              FROM
                  T_USER
              WHERE
                  DEPARTID IN (
                      SELECT
                          ID
                      FROM
                          T_DEPART
                      WHERE
                          LENGTH(ORG_CODE) = 9
                  )
          AS B
          SET A.ROLEID = '123456'
          WHERE
              A.USERID = B.ID

              自己和自己關(guān)聯(lián)更新
          UPDATE T_DEPART AS A,
           (
              SELECT
                  ID,
                  SUBSTRING(ORG_CODE, 16) ORG_CODE
              FROM
                  T_DEPART
              WHERE
                  LENGTH(ORG_CODE) = 8
              AND PARENT_DEPART_ID IS NOT NULL
          AS B
          SET A.PARENT_DEPART_ID = B.ID
          WHERE
              SUBSTRING(A.ORG_CODE, 16= B.ORG_CODE

              兩表關(guān)聯(lián)刪除,將刪除兩表中有關(guān)聯(lián)ID并且T2NAME為空的兩表記錄
          DELETE A,B FROM T1 AS A LEFT JOIN T2 AS B ON A.TID = B.ID WHERE B.NAME IS NULL

              將統(tǒng)計結(jié)果插入到表
          INSERT INTO SE_STAT_ORG (
              RECORD_DATE,
              ORG_ID,
              ORG_NAME,
              SIGN_CONT_COUNT,
              SIGN_ARRI_CONT_COUNT,
              SIGN_CONT_MONEY,
              SIGN_ARRI_CONT_MONEY,
              TOTAL_ARRI_CONT_COUNT,
              TOTAL_ARRI_MONEY,
              PUBLISH_TOTAL_COUNT,
              PROJECT_COUNT
          SELECT
              *
          FROM
              (
                  SELECT
                      '2012-06-09' RECORD_DATE,
                      PARENT_ORG_ID,
                      PARENT_ORG_NAME,
                      SUM(SIGN_CONT_COUNT) SIGN_CONT_COUNT,
                      SUM(SIGN_ARRI_CONT_COUNT) SIGN_ARRI_CONT_COUNT,
                      SUM(SIGN_CONT_MONEY) SIGN_CONT_MONEY,
                      SUM(SIGN_ARRI_CONT_MONEY) SIGN_ARRI_CONT_MONEY,
                      SUM(TOTAL_ARRI_CONT_COUNT) TOTAL_ARRI_CONT_COUNT,
                      SUM(TOTAL_ARRI_MONEY) TOTAL_ARRI_MONEY,
                      SUM(PUBLISH_TOTAL_COUNT) PUBLISH_TOTAL_COUNT,
                      SUM(PROJECT_COUNT) PROJECT_COUNT,
                  FROM SE_STAT_USER
                  WHERE DATE_FORMAT(RECORD_DATE, '%Y-%m-%d'= '2012-06-09'
                  GROUP BY PARENT_ORG_ID
              ) M

              三表關(guān)聯(lián)更新
          UPDATE SE_STAT_USER A,
           (
              SELECT
                  USER_ID,
                  SUM(INVEST_ORG_COUNT + FINANCIAL_ORG_COUNT + INTERMEDIARY_ORG_COUNT + ENTERPRISE_COUNT) AS COMMON_COUNT
              FROM SE_STAT_USER
              WHERE DATE_FORMAT(RECORD_DATE, '%Y-%m-%d'= '2012-06-09'
              GROUP BY USER_ID
          ) B,
           (
              SELECT
                  USER_ID,
                  SUM(ESTABLISH_COUNT + STOCK_COUNT + MERGER_COUNT + ACHIEVE_COUNT) AS PROJECT_COUNT
              FROM SE_STAT_USER
              WHERE DATE_FORMAT(RECORD_DATE, '%Y-%m-%d'= '2012-06-09'
              GROUP BY USER_ID
          ) C
          SET A.COMMON_COUNT = B.COMMON_COUNT, A.PROJECT_COUNT = C.PROJECT_COUNT
          WHERE A.USER_ID = B.USER_ID
          AND A.USER_ID = C.USER_ID
          AND DATE_FORMAT(A.RECORD_DATE, '%Y-%m-%d'= '2012-06-09'

              帶條件的關(guān)聯(lián)更新
          UPDATE SE_STAT_USER A,
           (
              SELECT
                  P.CHANNEL,
                  COUNT(P.CONT_ID) AS CONT_COUNT,
                  C.CUST_MGR_ID
              FROM
                  (
                      SELECT
                          CHANNEL,
                          CONT_ID
                      FROM SK_PROJECT
                      WHERE PROJECT_STATUS = 6
                      AND DATE_FORMAT(AUDIT_TIME, '%Y-%m-%d'= '2012-06-11'
                  ) p
              INNER JOIN SE_CONTRACT C ON P.CONT_ID = C.CONT_ID
              GROUP BY P.CHANNEL, C.CUST_MGR_ID
          ) B
          SET
              A.STOCK_COUNT = CASE WHEN B.CHANNEL = 2 THEN B.CONT_COUNT ELSE 0 END,
              A.ESTABLISH_COUNT = CASE WHEN B.CHANNEL = 3 THEN B.CONT_COUNT ELSE 0 END,
              A.ACHIEVE_COUNT = CASE WHEN B.CHANNEL = 4 THEN B.CONT_COUNT ELSE 0 END
              A.BRAND_COUNT = CASE WHEN B.CHANNEL = 5 THEN B.CONT_COUNT ELSE 0 END,
              A.MERGER_COUNT = CASE WHEN B.CHANNEL = 6 THEN B.CONT_COUNT ELSE 0 END
          WHERE
              A.USER_ID = B.CUST_MGR_ID
          AND DATE_FORMAT(A.RECORD_DATE, '%Y-%m-%d'= '2012-06-11'

              加索引
          ALTER TABLE PROJECT ADD INDEX INDEX_USER_ID (USER_ID),
                  ADD INDEX INDEX_PROJECT_STATUS (PROJECT_STATUS);

              刪除列
          ALTER TABLE PROJECT DROP COLUMN PROJECT_STATUS,
                  DROP COLUMN EXPECT_RETURN,DROP COLUMN CURRENCY;

              增加列
          ALTER TABLE PROJECT 
                  ADD COLUMN DICT_ID INT DEFAULT NULL COMMENT 'xxx' AFTER PROJECT_SITE,
                  ADD COLUMN INTRODUCE TEXT DEFAULT NULL COMMENT 'xx' AFTER DICT_ID,
                  ADD COLUMN STAGE INT DEFAULT NULL COMMENT 'xx' AFTER ID,
                  ADD COLUMN ATTACH_URI VARCHAR(8DEFAULT NULL COMMENT 'xxx' AFTER INTRODUCE;

              修改列,一般用MODIFY修改數(shù)據(jù)類型,CHANGE修改列名
          ALTER TABLE PROJECT CHANGE DICT_ID DICT_ID1 INT NOT NULL,
                  MODIFY PROJECT_STATUS TINYINT NOT NULL COMMENT 'xxx';

              本文為菠蘿大象原創(chuàng),如要轉(zhuǎn)載請注明出處。http://www.aygfsteel.com/bolo

          posted on 2015-01-23 15:11 菠蘿大象 閱讀(3129) 評論(3)  編輯  收藏 所屬分類: Database

          評論:
          # re: 常用的MySQL語句寫法 2015-01-23 18:59 | 京山游俠
          我也記錄一下,忘了到你這里來看。  回復(fù)  更多評論
            
          # re: 常用的MySQL語句寫法 2015-01-26 20:17 | chow
          這的確復(fù)雜,記錄一下,忘了到你這里來看  回復(fù)  更多評論
            
          # re: 常用的MySQL語句寫法 2015-01-30 16:06 | isLynn
          還不錯,收錄了 Tks  回復(fù)  更多評論
            
          主站蜘蛛池模板: 泸州市| 筠连县| 玉田县| 卢湾区| 鄂托克旗| 扶余县| 满城县| 蒙城县| 上饶县| 临沧市| 华坪县| 明水县| 香格里拉县| 丰都县| 府谷县| 民乐县| 玉溪市| 鄂州市| 连城县| 平遥县| 柯坪县| 罗田县| 正宁县| 肥西县| 图木舒克市| 德阳市| 玉树县| 甘孜| 瑞丽市| 沛县| 武川县| 原阳县| 容城县| 修水县| 铜陵市| 犍为县| 图木舒克市| 蒙阴县| 电白县| 苍山县| 桐柏县|