MySQL查询所有供应商和其任意一个产品 - Group by的使用
2009-11-16 11:25
465 查看
一个网友的需求,原文如下:
有供应商表a,商品表b 以下简称a,b
a与b是一对多的关系(一条供应商对应多条商品)
现在想一对一的提取
即所有的供应商都提取出来,但是每条供应商只提取一条商品记录对应起来就行了.
我提供的测试代码如下:
在MySQL里,非Group 和聚合的字段是可以出现select里面的,系统会自动选择一个数据。
在别的数据库里是不允许这么使用的
有供应商表a,商品表b 以下简称a,b
a与b是一对多的关系(一条供应商对应多条商品)
现在想一对一的提取
即所有的供应商都提取出来,但是每条供应商只提取一条商品记录对应起来就行了.
我提供的测试代码如下:
CREATE TABLE `t_supplier` ( `id` int(11) NOT NULL, `name` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `t_goods` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `Supplier_Id` int(11) NOT NULL, `Name` varchar(50) DEFAULT NULL, PRIMARY KEY (`Id`), KEY `Supplier_Id` (`Supplier_Id`), CONSTRAINT `t_goods_ibfk_1` FOREIGN KEY (`Supplier_Id`) REFERENCES `t_supplier` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; insert into t_Supplier values (1,'天津供应商'),(2,'北京供应商'); insert into t_Goods values(1,1,'天津产品1'),(2,1,'天津产品2'),(3,2,'北京产品1'),(4,2,'北京产品2'); -- 查询语句,注意group 的用法 select * from t_supplier s left join t_goods g on g.supplier_id=s.id group by s.id -- 查询结果 所有的供应商,和其一个产品
在MySQL里,非Group 和聚合的字段是可以出现select里面的,系统会自动选择一个数据。
在别的数据库里是不允许这么使用的
相关文章推荐
- MySQL中group_concat函数 --- 很有用的一个用来查询出所有group by 分组后所有 同组内的 内容
- MySQL中明知道查询结果只有一个,SQL语句中使用LIMIT 1会提高查询效率
- MySQL使用select查询时,在查询结果中增加一个字段并指定固定值
- GROUP BY 用法(转载)——group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函
- [Python 爬虫之路4] 使用selenium爬取知乎任意一个问题下,所有回答中的图片
- mysql left( right ) join使用on 与where 筛选的差异 博客分类: mysql MySQLSQL数据结构 有这样的一个问题mysql查询使用mysql中left(
- information_schema数据库的使用 ->查询一个数据的所有记录总数
- MySQL的一个一条SQL语句查询所有不同种类产品的一部分结果实例的SQL语句
- 使用mysql存储过程递归tree(如一个上级下面的所有下级的所有下级。。。。)
- MySQL高级查询之与Group By集合使用介绍
- mysql同时使用order by和limit查询时的一个严重隐患 -- 丢失数据
- mysql中如何将查询结果的多个记录中的指定字段放到一个二维数组中,以及在in子句中使用数组
- 启用mysql日志记录执行过的sql并且开启慢查询记录所有超过慢查询时间的SQL以及未使用索引SQL
- mysql经常使用查询:group by,左连接,子查询,having where
- MySQL高级查询之与Group By集合使用介绍
- 使用聚合函数group by后面必须要带着所有要查询的列,但是我只想根据group by后面的第一个列进行分组,怎么办? [
- mysql使用递归,根据pId,循环查询所有子类
- Mysql5.7.20使用group by查询(select *)时出现错误--修改sql mode
- 使用Limit参数优化MySQL查询 在找到一个记录后将停止查询
- 在SQL Server中使用SQL语句查询一个存储过程被其它所有的存储过程引用的存储过程名