Mysql 如何将sql请求与另一个表中的数据组合
我有两个表,第一个是用户数Mysql 如何将sql请求与另一个表中的数据组合,mysql,sql,Mysql,Sql,我有两个表,第一个是用户数 id int(11) AUTO_INCREMENT name varchar(250) 我有第二个表counts\u数据 id int(11) AUTO_INCREMENT id_user int(11) count int(11) date datetime 我想从第一个表中选择所有记录,从第二个表中获取一些数据,然后合并它们。我想为第二个表中的一个请求列创建临时数据,其中collect l
id int(11) AUTO_INCREMENT
name varchar(250)
我有第二个表counts\u数据
id int(11) AUTO_INCREMENT
id_user int(11)
count int(11)
date datetime
我想从第一个表中选择所有记录,从第二个表中获取一些数据,然后合并它们。我想为第二个表中的一个请求列创建临时数据,其中collect last count和order by date在第二个表中,collect collect倒数第二个count和order by date在第二个表中
INSERT INTO `users_counts` (`id`,`name`) VALUES ('1','John');
INSERT INTO `users_counts` (`id`,`name`) VALUES ('2','Michael');
INSERT INTO `users_counts` (`id`,`name`) VALUES ('3','Den');
INSERT INTO `counts_data` (`id`,`id_user`, `count`, `date`) VALUES ('1','1', '200', '2012.09.09');
INSERT INTO `counts_data` (`id`,`id_user`, `count`, `date`) VALUES ('2','1', '212', '2012.09.01');
INSERT INTO `counts_data` (`id`,`id_user`, `count`, `date`) VALUES ('3','2', '20', '2012.01.09');
INSERT INTO `counts_data` (`id`,`id_user`, `count`, `date`) VALUES ('4','3', '210', '2012.02.09');
INSERT INTO `counts_data` (`id`,`id_user`, `count`, `date`) VALUES ('5','3', '2033', '2012.03.09');
INSERT INTO `counts_data` (`id`,`id_user`, `count`, `date`) VALUES ('6','3', '1', '2012.04.09');
最后,在一个请求之后,我想得到这样的东西
id name count count_before
1 John 200 212
2 Michael 20 0
3 Den 1 2033
谢谢。另一种可能的方法:
select uc.id,
uc.name,
(select count
from counts_data cd
where cd.id_user = uc.id
order by date desc limit 1) as count,
ifnull((select count
from counts_data cd
where cd.id_user = uc.id
order by date desc limit 1 offset 1),0) as count_before
from users_counts uc;
因为每行/记录只需要counts_数据中的一个值,所以可以在mySQL中使用在线查询
select uc.id,
uc.name,
(select count
from counts_data cd
where cd.id_user = uc.id
order by date desc limit 1) as count,
ifnull((select count
from counts_data cd
where cd.id_user = uc.id
order by date desc limit 1 offset 1),0) as count_before
from users_counts uc;