MySQL 中根据A表的ID查询B表数据

例1:查询某个文章及其对应的评论(单个详情)

SELECT id, name, (SELECT comment_id, title, content FROM B WHERE user_id = A.id ORDER BY create_time DESC LIMIT 1) FROM A;

例2:查询分类表中,每种分类各包含多少商品(汇总)

SELECT category_id, (SELECT count(goods_id) FROM Goods WHERE category_id = A.category_id) FROM category;

部分参考:http://zhidao.baidu.com/link?url=FAZU7UHkC-qZXm4rPm5SNzHtVPf_YzINFsM-sNIeVSXungAtM838YxWXeBs1hZRWBdxk7ToM10OKJrw2wVk-_AsZYIh-vJTquJsGawhs79a

时间: 2024-10-11 19:20:02

MySQL 中根据A表的ID查询B表数据的相关文章

mysql中timestamp字段,在更新这个字段其他数据时候,不更新timestamp的时间

mysql中timestamp字段,在更新这个字段其他数据时候,不更新timestamp的时间 执行这条SQL ALTER TABLE  XXXX(表名)  CHANGE TIME TIME TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP; 列如如下所示语句: ALTER TABLE  ai_manager.message_task CHANGE TIME TIME TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

mysql中slow query log慢日志查询分析

在mysql中slow query log是一个非常重要的功能,我们可以开启mysql的slow query log功能,这样就可以分析每条sql执行的状态与性能从而进行优化了. 一.慢查询日志 配置 开启慢查询日志 , 配置样例: /etc/mysql/my.cnf[mysqld]log-slow-queries 在 my.cnf 配置文件中增加上述配置项并重启 mysql 服务,这时 mysql 慢查询功能生效.慢查询 日志将写入参数 DATADIR (数据目录:/var/lib/mysql

MySQL中锁详解(行锁、表锁、页锁、悲观锁、乐观锁等)

原文地址:http://blog.csdn.net/mysteryhaohao/article/details/51669741 锁,在现实生活中是为我们想要隐藏于外界所使用的一种工具.在计算机中,是协调多个进程或线程并发访问某一资源的一种机制.在数据库当中,除了传统的计算资源(CPU.RAM.I/O等等)的争用之外,数据也是一种供许多用户共享访问的资源.如何保证数据并发访问的一致性.有效性,是所有数据库必须解决的一个问题,锁的冲突也是影响数据库并发访问性能的一个重要因素.从这一角度来说,锁对于

mysql中已经存在某个库中有大小写的表,将lower_case_table_names由0改为1对已经存在的表是否有影响?

需求描述: 今天遇到了修改lower_case_table_names参数的问题,想了下,如果原来里面有表,表名有大小写的, 如果将lower_case_table_names从默认的0改为1之后,那么对于原来的表有没有影响.做个实验,在此 记录下. 操作过程: 1.原来未修改之前,库中创建大小写区分的表 mysql> drop database test05; Query OK, 2 rows affected (0.05 sec) mysql> create database test05

mysql中explain输出列之id的用法详解

参考mysql5.7 en manual,对列id的解释: The SELECT identifier. This is the sequential number of the SELECT within the query. The value can be NULL if the row refers to the union result of other rows. In this case, the table column shows a value like <unionM,N>

mysql中InnoDB存储引擎的行锁和表锁

Mysql的InnoDB存储引擎支持事务,默认是行锁.因为这个特性,所以数据库支持高并发,但是如果InnoDB更新数据的时候不是行锁,而是表锁的话,那么其并发性会大打折扣,而且也可能导致你的程序出错. 而导致行锁变为表锁的情况之一就是: SQL的更新(update)或者删除(delete)语句中未使用到索引,导致在InnoDB在对数据进行相应操作的时候必须把整个表锁起来进行检索(表锁).而如果使用了索引的话,InnoDB只会通过索引条件检索数据,而只锁住索引对应的行(行锁). 下面记录一下我遇到

多张表进行关联查询----&gt;删除某个数据的时候出现还有自己录的提示

多张表进行关联查询的时候,当某张表里面的一个字段在另外一张表有定义,就相当于一张表是另外一张表的子表:比如现在开发所遇到的一个问题: 这个是在删除sys_user表的里面的数据的时候出现的问题,因为sys_user(系统用户)里面含有user_id这个字段,而在另外一张表(就是sys_user的子表)里面(sys_user_role[系统用户角色表]:定义该系统用户功能菜单--->sys_user里面的user_name的功能)也有user_id; 当遇到这样的情况,解决思路就是: 1.查询出要

mysql中max_allowed_packet参数的配置方法(避免大数据写入或者更新失败)

这篇文章主要介绍了mysql中max_allowed_packet参数的配置方法,以及查看max_allowed_packet参数当前值的方法,需要的朋友可以参考下 MySQL根据配置文件会限制Server接受的数据包大小.有时候大的插入和更新会受 max_allowed_packet 参数限制,导致写入或者更新失败. 查看目前配置: 复制代码 代码如下: show VARIABLES like '%max_allowed_packet%'; 显示的结果为: 复制代码 代码如下: +------

mysql中的 IN和FIND_IN_SET的查询问题

原来以为mysql可以进行这样的查询select id, list, name from table where 'daodao' IN (list);      (一)注:1. table含有三个字段id:int,  list:varchar(255),  name:varchar(255) 实际上这样是不行的,这样只有当'daodao'是list中的第一个元素(我测试的时候貌似是第一个也是不行的,只有当list字段的值等于daodao时才是对的)时,查询才有效,否则都的不到结果,即使'dao