mysql經典語句寫法


<insert id="addDictionary" parameterType="java.util.Map">
INSERT COMMON_DICTDATA (
      ID,
      DATA_CODE,
      DATA_NAME,
      TYPE,
      DATA_DESC,
      DATA_SORT,
      DATA_STATUS,
  START_TIME,
  <if test="status != null and status == 0">
          STOP_TIME,
  </if>
      CREATE_DATE,
      CREATE_BY,
      UPDATE_DATE,
      UPDATE_BY
        ) VALUES (
  #{dictionaryId},
  #{dictionaryCode},
  #{dictionaryName},
  #{type},
  CONCAT(CONCAT(#{typeName},'-'),#{dictionaryName}),
  (
SELECT
T.data_sort
FROM
(
SELECT
IFNULL(MAX(data_sort), 0) + 1 AS data_sort
FROM
COMMON_DICTDATA
WHERE
type = #{type}
) T
),
  #{status},
  NOW(),
  <if test="status != null and status == 0">
      NOW(),
  </if>
  NOW(),
  #{userId},
  NOW(),
  #{userId})

</insert>


<!-- 更新字典數據信息 -->
<update id="updateDictionary" parameterType="java.util.Map">
  UPDATE COMMON_DICTDATA
    SET DATA_CODE = #{dictionaryCode},
    DATA_NAME = #{dictionaryName},
      DATA_DESC = CONCAT(CONCAT(#{typeName},'-'),#{dictionaryName}),
      DATA_STATUS = #{status},
      <if test="status != null and status == 1">
          START_TIME = NOW(),
           STOP_TIME = NULL,
      </if>
      <if test="status != null and status == 0">
          STOP_TIME = NOW(),
      </if>
    UPDATE_DATE = NOW(),
               UPDATE_BY = #{userId}
      WHERE TYPE = #{type}
        AND ID = #{dictionaryId}
</update>


<!-- 按類型獲取字典數據列表 -->

//此種方法比left join on更加方便,推薦使用(當前爲多表查詢)
<!-- 根據ID查詢招生批次 -->
<select id="queryEnrollBatchInfo" resultType="java.util.Map">
SELECT
    T1.ID  "enrollBatchId",
        T1.LEARNING_BATCH_ID  "enrollLearningBatchId",
T1.BATCH_NAME  "enrollBatchName",
date_format(start_time,'%Y-%m-%d')  'enrollStartTime',
date_format(stop_time,'%Y-%m-%d')  'enrollStopTime',
T1.STATUS  "status",
T1.HAS_USED  "hasUsed",
T2.ID  "learningBatchId",
T2.BATCH_NAME  "learningBatchName"
FROM REG_ENROLL_BATCH T1,REG_LEARNING_BATCH T2
WHERE T1.ID = #{enrollBatchId} AND T1.LEARNING_BATCH_ID =T2.ID
AND T1.HAS_DEL =0
</select>


//如果所需的數據可以爲空的情況下,使用left join on

<!-- 獲取招生批次列表 -->
<select id="queryEnrollBatchList" parameterType="com.wh.eas.manage.model.Page" resultType="java.util.Map">
SELECT 
E.id  "enrollBatchId",
E.learning_batch_id  "enrollLearningBatchId",
E.batch_name  "enrollBatchName",
date_format(start_time,'%Y-%m-%d')  'enrollStartTime',
date_format(stop_time,'%Y-%m-%d')  'enrollStopTime',
E.has_used  "hasUsed",
E.status  "status",
IFNULL(publish_time,'--')  "enrollPublishTime",
E.UPDATE_DATE  "updateDate",
L.id  "learningBatchId",
L.batch_name  "learningBatchName"
FROM REG_ENROLL_BATCH E 
LEFT JOIN REG_LEARNING_BATCH L 
ON E.learning_batch_id = L.id
      WHERE E.has_del = 0 
       <if test="params.learningBatchId !=null and params.learningBatchId!=''">
         AND E.learning_batch_id LIKE CONCAT(CONCAT('%',#{params.learningBatchId}),'%')
       </if> 
        ORDER BY E.status ,E.publish_time,E.create_date DESC
</select>


<!-- 獲取max截止時間 -->
<select id="getMaxStopTime" parameterType="java.util.Map" resultType="java.util.Map">
SELECT
ID "ENROLLBATCHID",
DATE_FORMAT(MAX(STOP_TIME), '%Y-%M-%D') 'enrollStartTime'
FROM
REG_ENROLL_BATCH
WHERE
STATUS = "1"
</select>


//foreach 遍歷

<!-- 根據ID獲取考覈指標 -->
<select id="queryReRegVerifyInfoById" parameterType="java.util.Map" resultType="java.util.Map">
   SELECT T1.ID "reRegVerifyId",
  T1.verify_status_id "StuStatusId",
  T2.ID "commonDictdataId",
  T2.data_name "StuStatus"
FROM reg_student_reg T1, common_dictdata T2
WHERE T1.ID = #{reRegVerifyId} AND T1.verify_status_id = T2.ID
        AND T1.ID in
          <foreach collection="manageModeApplyIds" separator="," item="manageModeApplyId" open="(" close=")">
#{manageModeApplyId}
 </foreach>
</select>

<!-- 獲取初審報名預審總數 -->
<select id="queryPreRegVerifyCount" parameterType="java.util.Map" resultType="java.lang.Integer">
SELECT COUNT(1)
FROM reg_pre_registration
WHERE 1=1
<if test="subjectLevelName !=null and subjectLevelName !=''">
AND LEVEL_ID LIKE CONCAT(CONCAT('%',#{subjectLevelName}),'%')
       </if>      
       <if test="subjectMajorName !=null and subjectMajorName !=''">
AND MAJOR_ID LIKE CONCAT(CONCAT('%',#{subjectMajorName}),'%')
       </if>      
       <if test="sysPointName !=null and sysPointName !=''">
AND POINT_ID LIKE CONCAT(CONCAT('%',#{sysPointName}),'%')
       </if>      
       <if test="preRegVerifyName !=null and preRegVerifyName !=''">
AND NAME LIKE CONCAT(CONCAT('%',#{preRegVerifyName}),'%')
       </if>      
<if test="preRegVerifyMobilePhone != null and preRegVerifyMobilePhone != ''">
AND MOBILEPHONE LIKE CONCAT(CONCAT('%',#{preRegVerifyMobilePhone}),'%')
</if>
<if test="status != null and status != ''">
AND STATUS = #{status}
</if>
</select>


<!-- 獲取考覈指標列表 -->
<select id="queryCourseExamModeList" parameterType="com.wh.eas.manage.model.Page" resultType="java.util.Map">
       SELECT S.*
         FROM (SELECT T1.ID "courseId",
              T1.COURSE_CODE "courseCode",
              T1.COURSE_NAME "courseName",
              T1.CREDIT "credit",
              T2.exam_forms "examForms",
              (SELECT GROUP_CONCAT(data_name)
                   FROM COMMON_DICTDATA
                  WHERE TYPE = 'EXAM_FORM'
                          AND DATA_STATUS = 1
                         AND HAS_DEL = 0
                    AND FIND_IN_SET(DATA_CODE, T2.exam_forms)) "examFormNames",
              T2.ID "examModeApplyId",
              T2.EXAM_METHOD_CODE "examMethodCode",
              (SELECT DATA_NAME
                 FROM COMMON_DICTDATA 
                WHERE TYPE = "EXAM_METHOD"
                  AND DATA_CODE = T2.EXAM_METHOD_CODE) "examMethodName",
              T2.EXAM_TYPE_CODE "examTypeCode",
              (SELECT DATA_NAME
                 FROM COMMON_DICTDATA 
                WHERE TYPE = "EXAM_TYPE"
                  AND DATA_CODE = T2.EXAM_TYPE_CODE) "examTypeName",
              T2.EXAM_TIME "examTime",
              T2.VERIFY_STATUS "verifyStatus",
              T2.FORM_RATE "formRate",
              T2.FINAL_RATE "finalRate",
              T2.PRACTICE_RATE "practiceRate",
              T2.MIN_FORM_SCORE "minFormScore",
              T2.MIN_FINAL_SCORE "minFinalScore",
              T2.MIN_PRACTICE_SCORE "minPracticeScore"
             FROM 
                SUBJECT_COURSE T1,
              SUBJECT_COURSE_EXAM_MODE_APPLY T2,
              subject_course_education t3
            WHERE 
            T1.ID = T2.COURSE_ID
            <if test="params.subjectId !=null and params.subjectId !=''">
            and t1.subject_id = #{params.subjectId}
            </if>
            <if test="params.educationId !=null and params.educationId !=''">
            and t3.edu_id = #{params.educationId}
            </if>
            <if test="params.verifyStatus !=null and params.verifyStatus !=''">
            and t2.verify_status = #{params.verifyStatus}
            </if>
            <if test="params.courseStatus !=null and params.courseStatus !=''">
            and t1.status = #{params.courseStatus}
            </if>
            <if test="params.courseCode !=null and params.courseCode !=''">
            and t1.course_code = #{params.courseCode}
            </if>
            <if test="params.courseName !=null and params.courseName !=''">
            and t1.course_name = #{params.courseName}
            </if>
              AND T1.HAS_DEL = 0
              AND T1.status <![CDATA[<>]]> 3
            ORDER BY T2.CREATE_DATE DESC) S 
              GROUP BY S.courseId
</select>

<!-- 獲取考覈指標總數 -->
<select id="queryCourseExamModeCount" parameterType="java.util.Map" resultType="java.lang.Integer">
  SELECT COUNT(1)
          FROM (SELECT T1.ID
         FROM SUBJECT_COURSE T1,
          SUBJECT_COURSE_EXAM_MODE_APPLY T2
        WHERE T1.ID = T2.COURSE_ID
          AND T1.HAS_DEL = 0
              AND T1.status <![CDATA[<>]]> 3
        GROUP BY T1.ID) S
</select>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章