首页 > 试题广场 >

Mysql中表student_table(id,name,b

[单选题]
Mysql中表student_table(id,name,birth,sex),插入如下记录:
('1004' , '张三' , '2000-08-06' , '男');
('1005' , NULL , '2001-12-01' , '女');
('1006' , '张三' , '2000-08-06' , '女');
('1007' , ‘王五’ , '2001-12-01' , '男');
('1008' , '李四' , NULL, '女');
('1009' , '李四' , NULL, '男');
('1010' , '李四' , '2001-12-01', '女');
执行
select count(t2.name) as c1
from (
select * from student_table where sex = '男' ) t1 
left  join 
(select * from student_table where sex = '女')t2 
on t1.birth = t2.birth and t1.name = t2.name ; 
的结果行数是()?
  • 3
  • 2
  • 1
  • 4
一句一句来看:
1. 先看这一句:(select * from student_table where sex = '男' ) t1     
    这句代码查询出来三行男生的:
    ('1004' , '张三' , '2000-08-06' , '男'),
    ('1007' , ‘王五’ , '2001-12-01' , '男'),
    ('1009' , '李四' , NULL, '男');

2. 再看这一句: (select * from student_table where sex = '女')t2      
    这句代码查询出来四行女生的:
    ('1005' , NULL , '2001-12-01' , '女'),
    ('1006' , '张三' , '2000-08-06' , '女'),
    ('1008' , '李四' , NULL, '女'),
    ('1010' , '李四' , '2001-12-01', '女');

3. 把上面两句进行 left  join  ,条件是 on t1.birth = t2.birth and t1.name = t2.name ; 
    结果会保留左表(男生)的三行,再按照条件(t1.birth = t2.birth and t1.name = t2.name)匹配生日相同且名字相同的,符合条件的只有    ('1006' , '张三' , '2000-08-06' , '女') 
    并把这个值添加在('1004' , '张三' , '2000-08-06' , '男') 这一行的右边,得到一个宽表
    ('1004' , '张三' , '2000-08-06' , '男','1006' , '张三' , '2000-08-06' , '女'),
    ('1007' , ‘王五’ , '2001-12-01' , '男', NULL, NULL, NULL, NULL),
    ('1009' , '李四' , NULL, '男', NULL, NULL, NULL, NULL);

4. 最后再看第一句select count(t2.name) as c1 这里的t2表也就是上面第二步中的女生表,女生表中的姓名能够和第三步得到的宽表匹配的只有('1006' , '张三' , '2000-08-06' , '女'),所以查到的是    ('1004' , '张三' , '2000-08-06' , '男','1006' , '张三' , '2000-08-06' , '女')
编辑于 2021-12-20 14:12:17 回复(2)
COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入)
发表于 2022-01-06 01:10:28 回复(2)
  • 连接时,null=null不算。连接后的新表只有一条数据相同。
select * 
    from (select * from student_table where sex = '男' ) t1 
        left  join 
        (select * from student_table where sex = '女')t2 
        on t1.birth = t2.birth and t1.name = t2.name ;

left_join_student-table

发表于 2022-02-09 00:34:21 回复(5)
我这个显示能配上哎,null=null
发表于 2022-03-24 15:56:38 回复(2)
问count函数结果多少行?不是结果是多少
发表于 2023-07-27 15:14:04 回复(0)
left join 最后再求count(右表允许为null的字段),相当于count(inner join)的结果吗
发表于 2023-09-15 10:57:45 回复(0)
这题目不是选A嘛
发表于 2023-03-10 15:49:50 回复(3)