问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql中的一些稍微复杂用法实例代码

发布网友 发布时间:2022-04-21 05:39

我来回答

1个回答

热心网友 时间:2022-04-07 17:31

前言
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
子查询、查询临时表、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
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
您可能感兴趣的文章:MySQL在关联复杂情况下所能做出的一些优化Mysql一些复杂的sql语句(查询与删除重复的行)深入mysql
"ON
DUPLICATE
KEY
UPDATE"
语法的分析MySQL
最基本的SQL语法/语句MySQL与Oracle的语法区别详细对比浅析Mysql
Join语法以及性能优化MySQL
ALTER语法的运用方法MySQL
prepare语句的SQL语法MySQL进阶SELECT语法篇MySQL
SQL
语法参考
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... mysql:性能分析中的explain之possiable_key案例测试 python连接MySQL数据库实例分析 vivot1和iqooz5 vivoT1和oppoK9s对比怎么样? vivoS10pro与vivoT1哪个更好 vivoT1和OPPOk9s有什么区别?怎么选? vivot1和oppok9s哪个好 reno6和vivot1那个好 vivoT1连接网络信号忽有忽无,在同一个地方荣耀就没事 vivot1和x50哪个值得购买? vivot1和opporeno6哪个好? vivot1跟荣耀50se哪个好 荣耀60和vivot1哪个好 vivot1手机和o&#8198;p&#8198;po&#8198;95A,荣耀30x哪个好? vivo T1和荣耀50谁更值得入手? 微信怎么设置仅一个手机登录我在平板电脑登陆过、现在不用了、发现经常登录、怎么才能限制_问一问 在爱奇艺写小说好不好 求overlord小说txt资源!!! 我下载的爱奇艺小说在哪 爱奇艺上怎么发表小说 mysql:exists子查询案例及运行原理讲解 404 Not Found mysql:真实表中数据的修改对视图的影响测试案例 MySQL技术内幕的内容简介 mysql多实例启动的几个错误 mysql锁定了数据库表只能写,为什么还可以读? 如何使用MySQL进行材料数据库分析 我用的是mysql5.7.12的版本,我执行insert的操作的时候,数据成功插入表中,但是一直报错,求大牛解决! mysql建视图的时候不能用子查询,mysql我用的是5.5版的了,怎么办? MySQL数据库服务器逐渐变慢 该如何分析与解决 mysql5.7.12报错:Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: YES) 无法连接数据库 如何分析mysql的查询语句 mysql视图的作用是什么 mysql:外键策略为级联删除案例测试 MySQL slave_net_timeout参数解决的一个集群问题案例 腊梅花根能泡酒喝吗? 腊梅的根的什么用?听别有说可以用来泡酒,是不是真的&gt; 我家的树上有很多腊梅花果实能干什么?可以有什么用? 腊梅花根泡酒能治腰疼吗? 腊梅花的根泡酒有什么功效?可以泡几次?