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_num | stu_name | sbjt |
---|---|---|
1 | 张三 | 语文 |
1 | 张三 | 数学 |
1 | 张三 | 英语 |
2 | 李四 | 语文 |
2 | 李四 | 数学 |
2 | 李四 | 英语 |
3 | 王五 | 语文 |
3 | 王五 | 数学 |
… | … | … |
stu_num | stu_name | sbjt |
---|---|---|
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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!