一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - mysql中的一些稍微復雜用法實例代碼

mysql中的一些稍微復雜用法實例代碼

2019-06-18 10:27gaoziyuecj Mysql

這篇文章主要給大家介紹了關于mysql中的一些稍微復雜用法的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用mysql具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

前言

mysql的語法相信對大家來說都不是難事,但是本文主要給分享了一些mysql復雜用法的相關內容,通過這篇文章相信大家會對mysql更深的了解一些,下面話不多說了,來一起看看詳細的介紹吧

一對多數據顯示成一行

GROUP_CONCAT(expr)

1、涉及的表關系:teacher表、teacher_subject_rel表(教師所能教的學科表)、subject表
2、業務場景: 需要拉取所有教師的編號(teacher_no)、學科名(subject_name)。   教師表(teacher)和學科(teacher_subject_rel)是一對多關系, 往往查詢出現的是同一教師多條 數據。我們希望得到每個教師一條數據 學科拼接成一條

1、基本語法

group_concat( [DISTINCT] 要連接的字段 [Order BY 排序字段 ASC/DESC] [Separator '分隔符'] )

2、例子

SELECT
 t.teacher_id as '教師id',
 t.teacher_no '教師編號',
 (
 SELECT
  GROUP_CONCAT(s.subject_name)
 FROM
  teacher_subject_rel tsr
 LEFT JOIN `subject` s ON tsr.subject_id = s.subject_id
 WHERE
  t.teacher_id = tsr.teacher_id
) AS '學科'
FROM
 teacher t

mysql中的一些稍微復雜用法實例代碼

子查詢、查詢臨時表、EXISTS

例子

SELECT
 *
FROM
 (
  SELECT
   o.id,
   o.student_intention_id,
   s. NAME,
   s.area_id,
   a.area_name,
   s.exam_year,
   o. STATUS,
   CASE o. STATUS
  WHEN '1' THEN
   '待提交'
  WHEN '2' THEN
   '待指派'
  WHEN '3' THEN
   '已完成'
  WHEN '4' THEN
   '處理中'
  END statusName,
  CASE o.emergency_degree
 WHEN '1' THEN
  '正常'
 WHEN '2' THEN
  '緊急'
 WHEN '3' THEN
  '非常緊急'
 END emergencyDegreeName,
 o.emergency_degree,
 o.update_time,
 (
  SELECT
   first_lesson_time
  FROM
   jx_strategy
  WHERE
   jx_lesson_plan_order_id = o.id
  AND STATUS IN (2, 7)
  AND first_lesson_time > now()
  ORDER BY
   first_lesson_time ASC
  LIMIT 1
 ) AS first_time,
 (
  SELECT
   deal_user_id
  FROM
   jx_strategy
  WHERE
   jx_lesson_plan_order_id = o.id
  AND STATUS <> 7
  AND deal_user_id <> 0
  ORDER BY
   id DESC
  LIMIT 1
 ) AS deal_user_id
FROM
 jx_lesson_plan_order o
LEFT JOIN student s ON s.student_intention_id = o.student_intention_id
LEFT JOIN area a ON s.area_id = a.id
WHERE
 o. STATUS <> 1
AND s.phone = '18501665888'
AND o.emergency_degree = 1
AND o. STATUS = 2
AND s.exam_year = '2015'
AND o.update_time >= '2018-08-14 20:28:55'
AND o.update_time <= '2018-08-14 20:28:55'
 ) AS a
WHERE
 1 = 1
AND a.deal_user_id = 145316
AND a.first_time >= '2018-08-17 00:00:00'
AND a.first_time <= '2018-08-30 00:00:00'
AND EXISTS (
 SELECT
  *
 FROM
  jx_strategy js
 WHERE
  js.jx_lesson_plan_order_id = a.id
 AND js. STATUS IN (2, 7)
 AND js.subject_id IN (2, 3)
)
ORDER BY
 a.update_time DESC
LIMIT 0,
 10

update 關聯變量條件修改

1、涉及的表關系: user_info表中的 id_number(身份證號) teacher表中的birth字段、 關聯關系usrer_id = teacher_id
2、業務場景:獲取用戶身份證上的出生日期將出生日期更新在birth字段

UPDATE teacher t INNER JOIN (

SELECT t.teacher_id, t.birth, u.id_number, CONCAT(SUBSTRING(u.id_number, 7, 4), '-', SUBSTRING(u.id_number, 11, 2), '-', SUBSTRING(u.id_number, 13, 2)) as birth1, u.reg_date, t.exit_time from teacher t
INNER JOIN user_info u ON u.user_id = t.teacher_id

) info on info.teacher_id = t.teacher_id
SET t.birth = info.birth1
WHERE info.reg_date > '2018-08-20 00:00:00' and info.id_number is not NULL and (info.birth is NULL or t.birth = '') and t.is_train = 1

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产视频a区 | 波多野结衣在线观看中文字幕 | 欧美视频在线播放观看免费福利资源 | 好猛好紧好硬使劲好大刺激视频 | 免费标准高清看机机桶机机 | 亚洲午夜精品久久久久久抢 | 强女明星系列小说 | 亚洲精品欧洲久久婷婷99 | 双性产卵 | 国产精品性视频免费播放 | 国产91影院 | 日本高清视频在线的 | 黑人粗长大战亚洲女 | 亚洲人成网站在线观看90影院 | 欧美日韩亚洲另类人人澡 | 国产区成人综合色在线 | 美女私人影院 | 99re最新网址 | 男人天堂资源网 | 北条麻妃黑人正在播放 | 国产成人精品视频一区 | 精品小视频在线 | 美女脱了内裤张开腿亲吻男生 | 8天堂资源在线官网 | 微福利92合集 | 美女厕所尿尿擦逼 | 九九热免费在线观看 | 娇妻被朋友征服中文字幕 | 91精品国产91久久久久久麻豆 | 思敏1一5集国语版免费观看 | 欧美xxxxx69 | 国产日韩欧美在线一区二区三区 | 欧美久久天天综合香蕉伊 | 亚洲精品成人a | 国产高清免费在线 | 国产高清路线一路线二2022 | 91精品啪在线观看国产日本 | 久久精品国产亚洲AV麻豆欧美玲 | 娇小老少配xxxxx性视频 | 精品国产国产综合精品 | 久久久精品国产免费A片胖妇女 |