MySQL在字段中使用select子查询
来源:互联网 发布:路由器故障 网络堵塞 编辑:程序博客网 时间:2024/05/29 09:10
前几天看别人的代码中看到在字段中使用select子查询的方法,第一次见这种写法,然后研究了一下,记录下来
大概的形式是这样的:
select a .*,(select b.another_field from b where a.id=b.aid) another_field from a where 1 limit 10;
下面还是以实例来说明,要不然不好理解,新建两张表,一张是商品表,另外一张是商品的评论表
商品表:
- CREATE TABLE `product` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `product_name` varchar(30) CHARACTER SET utf8 NOT NULL,
- `price` float NOT NULL,
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB;
评论表:
- CREATE TABLE `comment` (
- `id` int(11) NOT NULL AUTO_INCREMENT,
- `entity_id` int(11) NOT NULL,
- `content` varchar(100) CHARACTER SET utf8 NOT NULL,
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB;
然后插入一些数据:
- INSERT INTO `product` (`id`, `product_name`, `price`) VALUES
- (1, '肉松饼', 5),
- (2, '可乐', 5),
- (3, '鸡翅', 12),
- (4, '杯子', 42);
- INSERT INTO `comment` (`id`, `entity_id`, `content`) VALUES
- (1, 1, '味道还不错'),
- (2, 1, '还行啊'),
- (3, 3, '很实用哦');
下面我们用子查询的方式来查出商品的信息以及每个商品的评论数量
- SELECT product.*,(select count(comment.id) from comment where product.id=comment.entity_id) comment_count FROM `product` limit 5;
id product_name price comment_count
1 肉松饼 5 2
2 可乐 5 0
3 鸡翅 12 1
4 杯子 42 0
对于这种查询,可以分成两部来理解,首先忽略整个select子查询,查出商品表中的数据,然后根据商品的id执行子查询,对于一个商品id,子查询只能返回一条数据,如果子查询返回多条数据则会出错,另外,每一条select子查询只能查询一个字段。
另外的列子,查出每个商品信息以及商品的最新评论内容:
- SELECT product.*,(select comment.content from comment where product.id=comment.entity_id order by comment.id desc limit 1) comment_count FROM `product` limit 5;
查询结果如下:
id product_name price last_comment
1 肉松饼 5 还行啊
2 可乐 5 NULL
3 鸡翅 12 很实用哦
4 杯子 42 NULL
0 0
- MySQL在字段中使用select子查询
- MySQL在字段中使用select子查询
- MySQL在字段中使用select子查询
- MySQL在字段中使用select子查询
- 在 SELECT 查询中使用子查询
- 关于mysql中select子查询
- mysql中查询一个字段在哪几张表中
- ThinkPHP 在select查询时 无法使用中文字段原因
- MySQL中select查询的使用
- 在 SELECT 查询中使用 JOIN 联接
- mysql在select中新增字段自增长
- 【MySQL】SELECT语句 计算字段 数据处理函数 汇总函数 分组数据 子查询
- mysql查询语句select-子查询
- Mysql子查询IN中使用LIMIT
- 关于mysql 子查询中 使用 limit
- 在insert中使用子查询
- 在where子句中使用子查询
- 使用子查询。所谓子查询就是嵌套在另外一个查询内部的查询。mysql
- hadoop关键进程
- 从”JAVA“而终 23:JQuery讲解
- Hbase1.1.2采用javaAPI插入批量数据
- CSS3自定义滚动条样式 -webkit-scrollbar
- XCode7 上传报错提示(ERROR ITMS-90168)
- MySQL在字段中使用select子查询
- linux中的openoffice服务终止运行
- Hibernate与Spring 实现多租户 (Hibernate Multi Tenancy With Spring)
- zookeeperd无法启动的分析
- Android属性动画完全解析(上)
- 用R做线性回归
- WebRTC在多姿多彩的游戏领域,是否还有一席之地呢?
- Linux J2EE环境搭建 1、U盘/光盘挂载
- 什么是backport