sql子查询

2023-12-23 19:30:27

sql子查询

group_concat函数

-- 多对多查询时,分组合并 GROUP_CONCAT可以将同一组中多个名字连接起来

SELECT s.stu_num,s.stu_name,GROUP_CONCAT(s.subject) sbjt
FROM stu s
LEFT JOIN major m ON m.id=s.majorid
GROUP BY s.stu_num,s.stu_name,m.name
stu_numstu_namesbjt
1张三语文
1张三数学
1张三英语
2李四语文
2李四数学
2李四英语
3王五语文
3王五数学
stu_numstu_namesbjt
1张三语文,数学,英语
2李四语文,数学,英语
3王五语文,数学,英语,物理
4陈六数学

可以看出用完这个函数,可以把同一组的不同名字连起来,但是这个例子和多对多查询关系不大

子查询:

-- 子查询,用一个查询的结果当条件进行查询

-- 一行一列
-- 查询工资最多的员工,因为不知道工资最高是多少是谁,先查询出来工资最高量然后借用这个当条件查询
SELECT * FROM epmloyee WHERE money = (SELECT MAX(money) FROM epmloyee)

-- 表子查询,(多行多列)把一个表的查询结果当作另一个表的数据来源
-- 查询性别是男或女的人数大于二的一项的人数多少
SELECT * FROM (SELECT COUNT(*)c,gender FROM student GROUP BY gender) t WHERE t.c>2

-- 在where后面 使用列子查询(一列多行)
SELECT * FROM student WHERE height IN (SELECT height FROM student WHERE height IN(1.50,1.90))

文章来源:https://blog.csdn.net/qq_45576281/article/details/135171890
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。