这个老师讲的,诉求是求出孙悟空的拜把子兄弟没有去取经的,应该是取右表除孙悟空之外的所有的元素
参考这个吧 , 被你这个问题问的我也很懵逼 , 我找了这个文档链接 , 里面也没见到使用 is not null的
https://www.cnblogs.com/logon/p/3748020.html
但是,这个也是必须要加的一个条件呀
-- 注意自己是否需要建库
create database if not exists mysqldv1;
use mysqldv1;
-- 新建 user1 表
create table if not exists user1(
id smallint unsigned primary key auto_increment,
user_name varchar(40),
over1 varchar(40)
);
-- 新建 user2 表
create table if not exists user2 (
id smallint unsigned primary key auto_increment,
user_name varchar(40),
over1 varchar(40)
);
-- 新建 user_kills 表
create table if not exists user_kills (
id smallint unsigned primary key auto_increment,
user_id smallint unsigned,
timestr timestamp default CURRENT_TIMESTAMP,
kills smallint unsigned
);
-- 插入 user1 表数据
insert into user1(user_name,over1) values ('唐僧', '旃檀功德佛');
insert into user1(user_name,over1) values ('猪八戒', '净坛使者');
insert into user1(user_name,over1) values ('孙悟空', '斗战胜佛');
insert into user1(user_name,over1) values ('沙僧', '金身罗汉');
-- 插入 user2 表数据
insert into user2(user_name,over1) values ('孙悟空', '成佛');
insert into user2(user_name,over1) values ('牛魔王', '被降服');
insert into user2(user_name,over1) values ('蛟魔王', '被降服');
insert into user2(user_name,over1) values ('鹏魔王', '被降服');
insert into user2(user_name,over1) values ('狮驼王', '被降服');
-- 插入 user_kills 表数据
insert into user_kills(user_id, timestr, kills) values (2, timestamp('2013-01-10'), 10);
insert into user_kills(user_id, timestr, kills) values (2, timestamp('2013-02-01'), 2);
insert into user_kills(user_id, timestr, kills) values (2, timestamp('2013-02-05'), 12);
insert into user_kills(user_id, timestr, kills) values (4, timestamp('2013-01-10'), 3);
insert into user_kills(user_id, timestr, kills) values (4, timestamp('2013-02-11'), 5);
insert into user_kills(user_id, timestr, kills) values (2, timestamp('2013-02-06'), 1);
insert into user_kills(user_id, timestr, kills) values (3, timestamp('2013-01-11'), 20);
insert into user_kills(user_id, timestr, kills) values (2, timestamp('2013-02-12'), 10);
insert into user_kills(user_id, timestr, kills) values (3, timestamp('2013-02-07'), 17);
right join 是以右表为基础 也就是B表为基础的, B表不可能有空值 . 你说的 b.over is not null 加不加一样.. 应该是a.username is not null 就查出了 a.b重合的部分
各位,现提供该课程建库建表脚本代码共享如下。
-- 注意自己是否需要建库 -- create database if not exists mysqldv1; -- 新建 user1 表 create table if not exists user1 ( id smallint unsigned primary key auto_increment, user_name varchar(40), over varchar(40) ); -- 新建 user2 表 create table if not exists user2 ( id smallint unsigned primary key auto_increment, user_name varchar(40), over varchar(40) ); -- 新建 user_kills 表 create table if not exists user_kills ( id smallint unsigned primary key auto_increment, user_id smallint unsigned, timestr timestamp default CURRENT_TIMESTAMP, kills smallint unsigned ); -- 插入 user1 表数据 insert into user1(user_name,over) values ('唐僧', '旃檀功德佛'); insert into user1(user_name,over) values ('猪八戒', '净坛使者'); insert into user1(user_name,over) values ('孙悟空', '斗战胜佛'); insert into user1(user_name,over) values ('沙僧', '金身罗汉'); -- 插入 user2 表数据 insert into user2(user_name,over) values ('孙悟空', '成佛'); insert into user2(user_name,over) values ('牛魔王', '被降服'); insert into user2(user_name,over) values ('蛟魔王', '被降服'); insert into user2(user_name,over) values ('鹏魔王', '被降服'); insert into user2(user_name,over) values ('狮驼王', '被降服'); -- 插入 user_kills 表数据 insert into user_kills(user_id, timestr, kills) values (2, timestamp('2013-01-10'), 10); insert into user_kills(user_id, timestr, kills) values (2, timestamp('2013-02-01'), 2); insert into user_kills(user_id, timestr, kills) values (2, timestamp('2013-02-05'), 12); insert into user_kills(user_id, timestr, kills) values (4, timestamp('2013-01-10'), 3); insert into user_kills(user_id, timestr, kills) values (4, timestamp('2013-02-11'), 5); insert into user_kills(user_id, timestr, kills) values (2, timestamp('2013-02-06'), 1); insert into user_kills(user_id, timestr, kills) values (3, timestamp('2013-01-11'), 20); insert into user_kills(user_id, timestr, kills) values (2, timestamp('2013-02-12'), 10); insert into user_kills(user_id, timestr, kills) values (3, timestamp('2013-02-07'), 17);
和oracle等一样都是数据库管理系统,mysql是轻量级开源免费的关系型数据库 而sqlserver是microsoft开发并收费的结构行数据库。它们各有自己的对应环境及应用场景,初学者建议可以使用mysql比较轻便。如果更深入的分析可以在w3cschool或者慕课网之类的教程手册视频学习型网站学一下基础,基础还是很重要的。
本来是is null 的结果可能老师太紧张写错了!你看没有进行代码演示那里的代码就是正确的!
表结构在上面的内容中有提到。
左连接是以 join从句 左边的表为基础 ,右连接是以 join 从句右边的表为基础
关键在于你自己去试验一下,自己动手写啊 ,