|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
这些过程被存储和运行在数据库服务器上,以减少在客户端的处理过程,从而最大限度地提高了处理能力,因为通常情况下数据库服务器会运行地更快。存储过程并不是MySQL独有的功能,但是这个最近新增加的功能使得这个数据库比以前更具吸引力了。一个网友的需求,原文以下:
有供给商表a,商品表b以下简称a,b
a与b是一对多的干系(一条供给商对应多条商品)
如今想一对一的提取
即一切的供给商都提掏出来,可是每条供给商只提取一条商品纪录对应起来就好了.
我供应的测试代码以下:
viewplaincopytoclipboardPRint?
CREATETABLE`t_supplier`(
`id`int(11)NOTNULL,
`name`varchar(50)NOTNULL,
PRIMARYKEY(`id`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
CREATETABLE`t_goods`(
`Id`int(11)NOTNULLAUTO_INCREMENT,
`Supplier_Id`int(11)NOTNULL,
`Name`varchar(50)DEFAULTNULL,
PRIMARYKEY(`Id`),
KEY`Supplier_Id`(`Supplier_Id`),
CONSTRAINT`t_goods_ibfk_1`FOREIGNKEY(`Supplier_Id`)REFERENCES`t_supplier`(`id`)
)ENGINE=InnoDBAUTO_INCREMENT=5DEFAULTCHARSET=utf8;
insertintot_Suppliervalues(1,天津供给商),(2,北京供给商);
insertintot_Goodsvalues(1,1,天津产物1),(2,1,天津产物2),(3,2,北京产物1),(4,2,北京产物2);
--查询语句,注重group的用法
select*fromt_suppliers
leftjoint_goodsgong.supplier_id=s.id
groupbys.id
--查询了局
一切的供给商,和其一个产物
CREATETABLE`t_supplier`(
`id`int(11)NOTNULL,
`name`varchar(50)NOTNULL,
PRIMARYKEY(`id`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
CREATETABLE`t_goods`(
`Id`int(11)NOTNULLAUTO_INCREMENT,
`Supplier_Id`int(11)NOTNULL,
`Name`varchar(50)DEFAULTNULL,
PRIMARYKEY(`Id`),
KEY`Supplier_Id`(`Supplier_Id`),
CONSTRAINT`t_goods_ibfk_1`FOREIGNKEY(`Supplier_Id`)REFERENCES`t_supplier`(`id`)
)ENGINE=InnoDBAUTO_INCREMENT=5DEFAULTCHARSET=utf8;
insertintot_Suppliervalues(1,天津供给商),(2,北京供给商);
insertintot_Goodsvalues(1,1,天津产物1),(2,1,天津产物2),(3,2,北京产物1),(4,2,北京产物2);
--查询语句,注重group的用法
select*fromt_suppliers
leftjoint_goodsgong.supplier_id=s.id
groupbys.id
--查询了局
一切的供给商,和其一个产物
在MySQL里,非Group和聚合的字段是能够呈现select内里的,体系会主动选择一个数据。
在其余数据库里是不同意这么利用的如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。 |
|