mysql求表中年龄同张三,mysql子查询与连接查询

表结构以及数据:

CREATE TABLE`student` (

`id`int(11) NOT NULLAUTO_INCREMENT,

`name`varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,

`age`int(11) NULL DEFAULT NULL,PRIMARY KEY(`id`) USING BTREE

) ENGINE= InnoDB AUTO_INCREMENT = 13 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

INSERT INTO `student` VALUES (1, 'zazr', 11);INSERT INTO `student` VALUES (2, 'jkg', 20);INSERT INTO `student` VALUES (4, 'zazr', 11);INSERT INTO `student` VALUES (5, 'jkg', 12);INSERT INTO `student` VALUES (6, 'lgh', 13);INSERT INTO `student` VALUES (7, 'zazr', 11);INSERT INTO `student` VALUES (8, 'jkg', 12);INSERT INTO `student` VALUES (9, 'lgh', 13);INSERT INTO `student` VALUES (10, 'zazr', 11);INSERT INTO `student` VALUES (11, 'jkg', 12);INSERT INTO `student` VALUES (12, 'lgh', 13);

查询表中所有数据:

SELECT * FROM student;

90a49bdf36ee7e79db85f12d03d8d492.png

查询表中年龄的平均值:

SELECT ROUND(AVG(age),0) from student;

ROUND、AVG都是聚合函数,ROUND(小数,2)表示这个小数四舍五入保留2位小数;AVG求平均值

8d538ee996ac72b85ea3e6ab7da0bcf1.png

查询表中年龄大于等于平均值的学生姓名(子查询):

SELECT name FROM student WHERE age>=(SELECT ROUND(AVG(age),0) FROM student);

a6321fe8b3423bafc910f119b7f72f8c.png

将表中的不同姓名插入到另一张NAME表中:

创建表:

CREATE TABLE NAME(

-> id int(11) NOT NULL AUTO_INCREMENT KEY,

-> name VARCHAR(20));

SQL语句:

INSERT name(name) SELECT name FROM student GROUP BY name;

b852a7cd6b253429e13b1eac67b8d3a3.png

将student表中的name值,替换成name表所对应的id(内连接):如果student的name等于name表中的name,则将student表中的name换成对应的id

UPDATE student INNER JOIN name ON name.name=student.name SET student.name=name.id;

8a0db4be1e585ea0f895d803a823d879.png

此时可以看:id为1对应的是name表中id为3的名字:zazr

向student中添加两条记录:

INSERT student VALUES(NULL,"10",24);

INSERT student VALUES(NULL,"8",30);

dc4bcacf662b1aaf06e6193da6ea2e47.png

向name中添加两条记录:

INSERT name VALUES(NULL,"张三");

INSERT name VALUES(NULL,"李四");

5f4312d4cfc71829e60a98f4284788a5.png

内连接:

28b2c4e027a65f47b5a35baf3024dadb.png

查询student和name表满足相同条件的记录:student表中新加入的10和8,与name表中的id为4,5的没有对应关系,所以不会显示,条件就是student.name=name.id;

SELECT student.id,name.name FROM student INNER JOIN name ON student.name=name.id;

b72e1859f066128f4e9a71dc05b676a1.png

左外连接:显示左表中的全部以及与右表符合条件的记录

ef96fbca414598bbc63ce2764fb51946.png

将查询改为左外连接查询:显示student全部id数据,不过对应的name为NULL;

SELECT student.id,name.name FROM student LEFT JOIN name ON student.name=name.id;

fd69bf7bacf433daf6b47b6f17af3609.png

右外连接:

700b13d0082715b1ecb9a98196a72b2b.png

将查询改为右外连接查询:显示name全部name属性数据,不过对应的student的id为NULL;

SELECT student.id,name.name FROM student RIGHT JOIN name ON student.name=name.id;

60e0e610b324790d04ca7278424727da.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用如下的SQL语句查询出职工表中年龄最大的姓名: ``` SELECT name FROM employee WHERE age = (SELECT MAX(age) FROM employee); ``` 其中,`employee` 为职工表的表名,`name` 和 `age` 分别为姓名和年龄字段的名称。这条SQL语句先使用子查询获取到职工表中年龄最大的值,然后在外层查询中根据这个最大值来获取对应的姓名。如果有多个职工的年龄都是最大的,那么这条SQL语句会返回所有这些职工的姓名。 ### 回答2: 要查询出职工表中年龄最大的姓名,可以使用MySQL的MAX函数和子查询来实现。 假设职工表的表名为employee,其中包含字段name和age。以下是查询语句的步骤: 首先,使用子查询找到年龄的最大值。子查询的语句为:SELECT MAX(age) FROM employee; 然后,将子查询的结果作为条件,使用WHERE子句将最大年龄筛选出来。查询语句为:SELECT name FROM employee WHERE age = (SELECT MAX(age) FROM employee); 最后,执行以上查询语句,即可得到年龄最大的职工姓名。 举个例子,假设职工表的数据如下: | name | age | | -------- | ------- | | 张 | 28 | | 李四 | 32 | | 王五 | 30 | | 赵六 | 35 | 执行以上查询语句后,将会返回职工姓名为"赵六",因为他的年龄表中的最大值35。 以上就是使用MySQL查询职工表中年龄最大的姓名的方法,希望对您有所帮助。 ### 回答3: 要查询MySQL中职工表中年龄最大的姓名,可以使用以下SQL语句: ``` SELECT 姓名 FROM 职工表 ORDER BY 年龄 DESC LIMIT 1; ``` 以上语句通过`ORDER BY`关键字降序排序职工表中年龄,并使用`LIMIT 1`限制只返回一行结果。这样就能查询年龄最大的职工的姓名。 请注意,以上语句中的"职工表"、“姓名”和“年龄”是占位符,实际查询中需要替换成具体的表名和列名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值