gpt4 book ai didi

mysql - 获取所有用户的最新积分

转载 作者:行者123 更新时间:2023-11-29 13:14:29 24 4
gpt4 key购买 nike

我正在获取最新时间戳,但有旧分数。我正在寻找最新时间戳,其中最新分数作为响应,并且每个接收器只有最后一个。 http://www.sqlfiddle.com/#!2/07d11/1

 CREATE TABLE if not exists tblA
(
id int(11) NOT NULL auto_increment ,
sender varchar(255),
receiver varchar(255),
msg varchar(255),
date timestamp,
points varchar(255),
PRIMARY KEY (id)
);

CREATE TABLE if not exists tblB
(
id int(11) NOT NULL auto_increment ,
sno varchar(255),
name varchar(255),
PRIMARY KEY (id)
);


INSERT INTO tblA (sender, receiver,msg,date,points ) VALUES
('1', '2', 'buzz ...','2011-08-21 14:11:09','10'),
('1', '2', 'test ...','2011-08-21 14:12:19','20'),
('1', '3', 'buzz ...','2011-08-21 14:11:09','10'),
('1', '3', 'test ...','2011-08-21 14:12:19','20'),
('1', '4', 'buzz ...','2011-08-21 14:11:09','10'),
('1', '4', 'test ...','2011-08-21 14:12:19','20');



INSERT INTO tblB (sno, name ) VALUES
('1', 'Aa'),
('2', 'Bb'),
('3', 'Cc'),
('4', 'Dd'),
('5', 'Ee'),
('6', 'Ff'),
('7', 'Gg'),
('8', 'Hh');

sql:

select *, max(date)
from tblA a join
tblB b
on b.sno in (a.receiver)
group by b.name
order by max(date) desc;

最佳答案

尝试如下:

SELECT *
FROM (

SELECT tblB.*, MAX(tblA.date) AS date
FROM tblB
JOIN tblA ON tblB.sno = tblA.receiver
GROUP BY tblB.sno

) AS subset
JOIN tblA ON subset.sno = tblA.receiver
AND subset.date = tblA.date

这个想法是首先通过从 tblB 中选择每条记录的最大日期来选择您需要的行(子查询)。接下来,您可以将这些记录与原始表连接起来以获取分数。

关于mysql - 获取所有用户的最新积分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21661153/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com