请问下面查询语句是什么意思,php,mysql
发布网友
发布时间:2022-04-15 06:37
我来回答
共3个回答
热心网友
时间:2022-04-15 08:06
LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
$sql="select a.*,b.name1 from content a left join member b on a.studentid=b.studentid order by a.id desc"; 详细意思:a.* 是a表的所有字段,b.name是:b表的name字段,from content a 是表content定义别名为a.就相当于 a.*等同于content.*。 left join 是关键字,左连接查询。后面接连接的表member ,member 后面的b是给member表定义的别名。后面接的on是固定用法。a.stdentid=b.studentid 意思为两的表的studentid的值相等的查询出来。有点相当于where条件的意思。a.id desc 意思是以a表的id 字段做降序排序。如觉得清楚的话,给个分吧。谢谢
热心网友
时间:2022-04-15 09:24
我估计你的关键问题在于left join上
如果是inner join 的话相当于
select a.*,b.name1 from content a inner join member b on a.studentid=b.studentid order by a.id desc
等价于
select a.*,b.name1 from content a, member b where a.studentid=b.studentid order by a.id desc
如果是left join的话 相当于要取出a表上所有数据,不论在b表中是否能够找到与a相同的stuentid
也就是说,查询结果中的b.name1有可能是个空值
热心网友
时间:2022-04-15 10:59
LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
$sql="select a.*,b.name1 from content a left join member b on a.studentid=b.studentid order by a.id desc"; 详细意思:a.* 是a表的所有字段,b.name是:b表的name字段,from content a 是表content定义别名为a.就相当于 a.*等同于content.*。 left join 是关键字,左连接查询。后面接连接的表member ,member 后面的b是给member表定义的别名。后面接的on是固定用法。a.stdentid=b.studentid 意思为两的表的studentid的值相等的查询出来。有点相当于where条件的意思。a.id desc 意思是以a表的id 字段做降序排序。
其实说这么多,只要是从content表里面获取全部字段,从member表里面获取到学生名字
然后得到学生的内容的集合