首页 > 试题广场 >

Mysql中表student_table(id,name,b

[单选题]
Mysql中表student_table(id,name,birth,sex),插入如下记录:
('1001' , '' , '2000-01-01' , '男');
('1004' , '张三' , '2000-08-06' , '男');
('1005' , NULL , '2001-12-01' , '女');
('1006' , '张三' , '2001-12-02' , '女');
执行
 select t1.name from 
 (select * from student_table where sex = '女')t1 
 left join 
 (select * from student_table where sex = '男')t2 
 on t1.name = t2.name;
的结果行数是()?
  • 4
  • 3
  • 2
  • 1
tkw头像 tkw
左表2行,右表2行,t1.name = t2.name 条件下结果为1行,由于是左连接,左表中 name = NULL也会显示,共2行
发表于 2022-02-21 09:00:32 回复(0)
CREATE TABLE IF NOT EXISTS `student_info`(
    id VARCHAR(10),
    name VARCHAR(20),
    birth VARCHAR(20),
    sex VARCHAR(3)
);
INSERT INTO student_info
VALUES('1001' , '' , '2000-01-01' , '男'),('1004' , '张三' , '2000-08-06' , '男'),
('1005' , NULL , '2001-12-01' , '女'),('1006' , '张三' , '2001-12-02' , '女');
select t1.name from 
(select * from student_info where sex = '女')t1 
left join 
(select * from student_info where sex = '男')t2 
on t1.name = t2.name;
  • 结果

图片说明

  • 左连接,左边表会全部显示。所以sex='女'都会显示,即使name=NULL
发表于 2022-02-21 22:28:34 回复(2)
左连接,左边表的数据会全部输出
发表于 2022-08-16 09:14:52 回复(0)
选错了选成3行,错误原因:只看了下面连接后是返回3行,忘了看select的筛选是只要t1的。
发表于 2022-12-07 20:34:23 回复(0)
('1005' , NULL , '2001-12-01' , '女',NULL,NULL,NULL);
('1006' , '张三' , '2001-12-02' , '女','1004','2000-08-06' , '男');
发表于 2023-01-11 09:40:46 回复(0)
重点在于理解 left join 与right join
发表于 2022-11-10 16:13:09 回复(0)
LEFT JOIN 会从左表中返回所有的行,即便在右表中没有匹配的行
理解:匹配的行视情况返回,没有匹配的行只会返回一行
发表于 2022-10-02 14:39:41 回复(0)
有一个需要注意的点:右表匹配到数据只会在左表的后边添加,在同一行,与左表的属于同一条数据,而不是新增一行。
编辑于 2024-04-09 09:43:07 回复(0)
LEFT JOIN 左链接,会从左表中返回所有的行,即便在右表中没有匹配的行
编辑于 2023-12-05 14:43:29 回复(0)
是几行,不是count,null也计算在内
发表于 2023-09-19 19:43:21 回复(0)