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

              將數(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來(lái)更新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)計(jì)結(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)載請(qǐng)注明出處。http://www.aygfsteel.com/bolo

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

          評(píng)論:
          # re: 常用的MySQL語(yǔ)句寫(xiě)法 2015-01-23 18:59 | 京山游俠
          我也記錄一下,忘了到你這里來(lái)看。  回復(fù)  更多評(píng)論
            
          # re: 常用的MySQL語(yǔ)句寫(xiě)法 2015-01-26 20:17 | chow
          這的確復(fù)雜,記錄一下,忘了到你這里來(lái)看  回復(fù)  更多評(píng)論
            
          # re: 常用的MySQL語(yǔ)句寫(xiě)法 2015-01-30 16:06 | isLynn
          還不錯(cuò),收錄了 Tks  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 武城县| 日照市| 宜兴市| 中阳县| 浏阳市| 东方市| 含山县| 沁源县| 文成县| 巴里| 岐山县| 五莲县| 孟津县| 西贡区| 鱼台县| 达日县| 兴化市| 筠连县| 聂拉木县| 牙克石市| 青州市| 丹东市| 盱眙县| 双牌县| 长垣县| 景德镇市| 麻江县| 文水县| 华坪县| 鄄城县| 昌邑市| 乌什县| 遵义县| 五家渠市| 乃东县| 晋江市| 镇原县| 广元市| 安达市| 高州市| 中西区|