我想获得最高点行与行列和选择查询没有rownum = rownum + 1。我已经尝试了下面的查询,但我缺少的东西也链接http://sqlfiddle.com/#!2/fd7897/7。排名用户由最大id和点,但(排名是错误的)
我在寻找每个接收者的最后一个入口的答案,这也是最高分入口rankwise:我真的很感激任何帮助。感谢提前。
像这样:
( '2', '4', '测试...', '2011-08-21 14时13分19秒', '40', '009') - --rank1
('4','2','test ...','2011-08-21 14:13:19','30','003')---- rank2
( '1', '3', '测试...', '2011-08-21 14点12分19秒', '20', '005')---- rank3
查询到目前为止:
SELECT * ,
(select count(*)
from tblA u2
where u2.points > u.points or
u2.points = u.points and u2.id <= u.id
) as rank
FROM (SELECT u.receiver, MAX(u.id) AS id
FROM tblA u
GROUP BY u.receiver
) subset JOIN
tblA u
ON subset.receiver = u.receiver AND subset.id = u.id order by rank;
个
表:
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 int(255),
refno 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)
);
CREATE TABLE if not exists tblC
(
id int(11) NOT NULL auto_increment ,
data varchar(255),
refno varchar(255),
extrarefno varchar(255),
PRIMARY KEY (id)
);
INSERT INTO tblA (sender, receiver,msg,date,points,refno) VALUES
('1', '2', 'buzz ...','2011-08-21 14:11:09','10','001'),
('1', '2', 'test ...','2011-08-21 14:12:19','20','002'),
('4', '2', 'test ...','2011-08-21 14:13:19','30','003'),
('1', '3', 'buzz ...','2011-08-21 14:11:09','10','004'),
('1', '3', 'test ...','2011-08-21 14:12:19','20','005'),
('1', '4', 'buzz ...','2011-08-21 14:11:09','10','006'),
('1', '4', 'test ...','2011-08-21 14:12:19','20','007'),
('3', '4', 'test ...','2011-08-21 14:13:19','30','008'),
('2', '4', 'test ...','2011-08-21 14:13:19','40','009');
INSERT INTO tblB (sno, name) VALUES
('1', 'Aa'),
('2', 'Bb'),
('3', 'Cc'),
('4', 'Dd'),
('5', 'Ee'),
('6', 'Ff'),
('7', 'Gg'),
('8', 'Hh');
INSERT INTO tblC (data,refno,extrarefno) VALUES
('data1', '001', '101'),
('data2', '002', '102'),
('data3', '003', '103'),
('data4', '004', '101'),
('data5', '005', '102'),
('data6', '006', '103'),
('data7', '007', '101'),
('data8', '008', '101'),
('data9', '009', '101');
+1的数据例如,小提琴,所有需要的细节:) –
@JorgeCampos谢谢,但挣扎了精确的输出,子查询工作的一部分,而不是整个查询。 – jason
我有点困惑。你为什么需要tblB和tblC? – Leo