–查表
select * from orderitem;
select * from orders;
– 内连接
select *
from orders join orderitem
-- on orders.oid = orderitem.oid;
using (oid)
where orders.uid= 777;
– 外连接
– a:左外连接
select *
from orders left join orderitem
on orders.oid = orderitem.oid;
-- where orders.uid= 777;
– b:右外连接
select *
from orders right join orderitem
on orders.oid = orderitem.oid;
-- where orders.uid= 777;
– c:全外连接 ,(MySQL暂不支持)
-- select *
-- from orders full join orderitem
-- on orders.oid = orderitem.oid;
-- where orders.uid= 777;
–分组函数
结构如下:
`select distinct * | 字段 | 表达式 | 函数 as 别名
from 表 表别名
where 过滤行记录条件
group by 分组字段列表
having 过滤组
order by 字段列表 asc | desc`;
where和having的区别:
where :过滤行记录,不能使用组函数, having:过滤组 可以使用组函数;
都是用来放过滤条件的
– group by 分组
–group by 一个字段
-- 按订单查询每个订单项的信息
select * from orderitem group by oid;
–group by 多个字段
-- 按商品查询每个订单项的信息
select * from orderitem group by pid,oid;
–group by having
-- 查询订单平均金额大于2000的其订单项信息
select *
from orderitem group by oid
having avg(total) > 2000;
– where … group by having
--按订单查询,商品数量大于1,且订单平均金额大于2000的其订单项信息
select *
from orderitem
where count > 1
group by oid
having avg(total) > 2000;