我有以下两个表:
create table1
(
SENDER int,
RECEIVER int,
TIME time,
TYPE char(1)
);
create table2
(
ID int,
Y int,
CONTACT int,
DATE time
);
我正在执行以下联接查询:
SELECT B.ID, A.RECEIVER AS Z, A.SENDER AS CONTACT, A.TYPE, A.TIME
FROM table1 A
JOIN table2 B ON A.RECEIVER = B.CONTACT
WHERE A.TYPE = 'A'
AND A.TIME < B.DATE
如何修改查询以使用(ID,CONTACT)
仅返回每个GROUP BY
对的前40个结果?
我可以使用字段table2.DATE
排序数据
因为我想要每个ID的前40个结果,所以我将ID,autoId用作主键,这里的autoId是自动递增的键。因此,在执行以下查询后:SELECT B.ID, A.RECEIVER AS Z, A.SENDER AS CONTACT, A.TYPE, A.TIME
FROM table1 A
JOIN table2 B ON A.RECEIVER = B.CONTACT
WHERE A.TYPE = 'A'
AND A.TIME < B.DATE
我得到的结果是,每个ID的autoId初始化为1例如:
ID CONTACT autoId1 2 21 3 21 11 31 34 42 5 5 12 3 332 56 3 3>
由于autoId是自动增量,因此已经有一个索引。创建此表后,我可以轻松删除autoId大于40的结果。而此过程运行得非常快!