mysql多表结合查询
发布时间:08/01 来源:未知 浏览:
关键词:
举荐课程:MySQL教程。
例子:
user表: id | name ——— 1 | libk 2 | zyfon 3 | daodao user_action表: user_id | action ————— 1 | jump 1 | kick 1 | jump 2 | run 4 | swim
sql语句:
select id, name, action from user as uleft join user_action a on u.id = a.user_id
效果:
id | name | action ——————————– 1 | libk | jump 效果1 1 | libk | kick 效果2 1 | libk | jump 效果3 2 | zyfon | run 效果4 3 | daodao | null 效果5 ---------------------
剖析:
注意到user_action中还有一个user_id=4, action=swim的纪录,但是没有在效果中涌现,
而user表中的id=3, name=daodao的会员在user_action中没有响应的纪录,但是却涌现在了效果集中
由于此刻是left join,所有的工作以left为准.
效果1,2,3,4都是既在左表又在右表的纪录,5是只在左表,不在右表的纪录
工作道理:
从左表读出一条,选出所有与on匹配的右表纪录(n条)进行连贯,构成n条纪录(包含反复的行,如:效果1和效果3),要是右侧没有与on前提匹配的表,那连贯的字段都是null.然后继续读下一条。
引申:
我们可以用右表没有on匹配则显示null的纪律, 来寻出所有在左表,不在右表的纪录, 注意用来推断的那列必需声明为not null的。
如:
select id, name, action from user as uleft join user_action a on u.id = a.user_idwhere a.user_id is NULL
(注意:1.列值为null应当用is null 而不克不及用=NULL
2.这里a.user_id 列必需声明为 NOT NULL 的.)
上面sql的result:
id | name | action ————————– 3 | daodao | NULL
以上就是mysql多表结合查询的细致内容,更多请关注 百分百源码网 其它相干文章!