Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何将sql请求与另一个表中的数据组合_Mysql_Sql - Fatal编程技术网

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;