取出A表中前20条记录,:以ID为标准并取出B表中对应uid的前5条记录(按照utime倒序排列)SELECT * FROM a a1 INNER JOIN ( SELECT a.id,a.ucomment,a.uid,a.utime FROM b a LEFT JOIN b c ON a.uid=c.uid AND a.utime<=c.utime GROUP BY a.id,a.ucomment,a.uid,a.utime HAVING COUNT(c.id)<=5 ORDER BY uid) a2 ON a1.uid=a2.uid where a1.id<=20
SELECT * FROM a a1 INNER JOIN (SELECT a.id,a.ucomment,a.uid,a.utime FROM b a LEFT JOIN b c ON a.uid=c.uid AND a.utime <=c.utime GROUP BY a.id,a.ucomment,a.uid,a.utime HAVING COUNT(c.id) <=5 ORDER BY uid) a2 ON a1.uid=a2.uid order by a.id asc limit 0,100
uid uname
1 天使之城
2 天使名妆
3 天空之城
4 LULA
5 月光石
6 霓裳物语
7 百分一
8 今天
9 练习
10 迟来的爱
11 兄弟
12 忘情水
13 犯错
14 何必在一起
15 七年的爱
16 摇摆
17 天堂
18 白雪
19 独一无二
20 至少还有你
21 棉花糖B表
id uid ucomment utime
1 1 呵呵,我又来了! 2009-11-18 09:31:26
2 1 小帅锅 2009-11-18 09:34:41
3 2 初来乍到 2009-11-19 12:27:26
4 2 漂亮宝贝 2009-11-19 12:45:11
5 2 可爱宝贝~!~ 2009-11-20 11:55:02
6 3 少林功夫! 2009-11-20 19:37:53
7 3 真的好可爱、 2009-11-21 17:05:51
8 4 爱死个人的大宝宝 2009-11-21 20:05:34
9 4 双手轻轻捧起你的脸 2009-11-21 20:05:54
10 6 吹干你的泪眼 2009-12-23 09:59:29
11 6 梦还有空间 2009-12-24 10:47:55
12 6 我的情感热切危险 2009-12-24 12:29:30
13 6 多看你一眼就会点燃我心中无法扑灭的火焰 2009-12-24 18:21:27
14 7 我不断失望 2009-12-24 18:23:28
15 7 不断希望 2009-12-24 18:29:03
16 8 苦自己藏笑与你分享 2009-12-25 17:02:55
17 8 如今站在台上 2009-12-26 11:37:19
18 9 地球自转一次是一天 2009-12-26 11:39:11
19 9 那是代表多爱你一天 2009-12-26 11:40:21
20 9 真善美的爱恋 2009-12-26 11:40:27
21 9 没有局限,也没有缺陷 2009-12-26 11:41:29
22 10 地球公转一次是一年 2009-12-26 11:41:35
23 11 那时代表多爱你一年 2009-12-26 11:41:37
24 11 恒久的地平线和我的心 2009-12-26 11:41:39
25 11 永不改变 2009-12-26 11:41:44
26 13 飞越了时间的局限,拉近地域的平面 2009-12-26 11:41:46
27 13 紧紧的相恋 2009-12-26 11:41:50
28 13 绿色上网过滤软件绿坝-花季护航 2009-12-26 11:41:52
29 14 Cybersitter在起诉书中表示 2009-12-26 11:41:54
30 14 绿坝两家生产商非法拷贝了 2009-12-26 11:41:56
31 14 Cybersitter过滤软件逾3000条代码, 2009-12-26 11:41:57
32 15 并与电脑生产商共同在中国及其他汉语地 2009-12-26 11:42:12
33 15 区分销逾5600万张绿坝软件拷贝 2009-12-26 11:42:10
34 15 严重侵犯了该公司的知识产权, 2009-12-26 11:42:17
35 16 并给公司造成了巨大损失 2009-12-26 11:43:24
36 16 据悉,该公司旗下名为Cybersitter的软件与绿坝一样 2009-12-26 12:51:54
37 16 是一款旨在帮助父母对儿童上网内容进行过滤的软件 2009-12-26 12:51:56
38 17 去年6月,工信部发布通知 2009-12-26 12:51:58
39 17 要求从2009年7月1日起 2009-12-26 12:51:59
40 17 在我国境内生产销售的计算机出厂前将预装绿坝 2009-12-26 12:52:01
41 18 进口计算机在我国销售前也将预装该软件 2009-12-26 12:52:03
42 18 由财政资金买断绿坝一年服务供全社会免费使用 2009-12-26 12:52:05
43 18 绿坝的推出一直都伴随着争议 2009-12-26 12:52:07
44 18 有的消费者担心绿坝是一种流氓软件 2009-12-26 12:52:09
45 18 有的消费者担心绿坝会泄露个人隐私等 2009-12-26 12:52:28
46 19 但令 绿坝最为尴尬的还要 2009-12-26 12:53:37
47 19 属美国密歇根大学去年6月发布的一份研究报告。 2009-12-26 12:53:52
48 19 密歇根大学对绿坝的这份研究报告称 2009-12-26 12:54:10
49 19 绿坝包含多个安全漏洞,建议安装了的用户立即卸载 2009-12-26 13:12:43
50 19 同时还指出绿坝中的部分代码存在侵权 2009-12-26 13:12:45
51 19 与美国Solid Oak公司设计的软件相同。 2009-12-26 13:14:43
52 1 Solid Oak是本次案件原告Cybersitter的母公司 2009-12-26 13:13:43
53 1 随后Solid Oak声称将控告绿坝生产商 2009-12-26 13:17:43
54 2 不过中方公司亦给与强硬回应。郑州金 2009-12-26 13:12:43
55 2 惠公司总经理张晨民在接受本报记者专访时曾表示 2009-12-26 11:22:52
56 10 推出绿坝是在做一件好事 2009-12-26 11:12:52
57 20 绿坝与Cybersitter的黑名单地址库确有类似之处 2009-12-26 11:23:52
58 21 但绿坝绝对不存在盗窃代码 2009-12-26 11:24:52
59 21 知识产权律师姚克枫昨日分析 2009-12-26 11:25:52
60 20 首先,由于此次纠纷发生地在中国 2009-12-26 11:26:52
61 18 所涉及的企业也在中国 2009-12-26 11:27:52
62 18 所以此次Cybersitter起诉地点存有一定争议 2009-12-26 11:28:52
63 17 此外,22亿美元的赔偿金似乎也不合理 2009-12-26 11:29:52
64 17 因为这款软件在推广过程中一直是在免费给社会使用 2009-12-26 11:30:52
65 17 绿坝推广商及企业并非以盈利为主 2009-12-26 11:31:52
66 16 而像这种跨国官司 2009-12-26 11:32:52
67 16 非常耗时,拖上好几年是常有的事情 2009-12-26 11:33:52
68 19 而数额如此巨大可一定程度凸显了原告有炒作嫌 2009-12-26 11:34:52
69 20 2007年,约有12%的IT工作者属于高度专业人员 2009-12-26 11:35:52
70 20 Corporate Executive Board信息技术 2009-12-26 11:36:52
71 19 实践部的监管董事加米卡倍拉(Jaime Capella) 2009-12-26 11:37:52
72 15 说道:这些都是比较挑剔的IT职员。 2009-12-26 11:38:52
73 14 们也可能是第一批最有可能离开你公司的职员。 2009-12-26 11:39:52
74 11 同样,非盈利研究组织Conference Board Inc.5日表示 2009-12-26 11:40:52
75 12 去年对5000美国家庭的调查显示, 2009-12-26 11:41:52
76 11 45%的屋主表示对现有工作表示满意 2009-12-26 11:42:52
77 13 这比起1987年62%的比率下降不少。 2009-12-26 11:43:52
78 13 来自医疗保险公司基础设施部副总裁迈克汉 2009-12-26 11:44:52
79 13 根(Mike Hagan)说道:在IT类职业, 2009-12-26 11:45:52
80 14 有许多处于压抑状态的不满 2009-12-26 11:46:52
81 14 经济衰退让职员雇主摩擦降至了新低。 2009-12-26 11:47:52
82 14 一旦经济恢复或是稳定 2009-12-25 11:30:52
83 15 这些不满的职员会跳槽到别的工作岗位 2009-12-25 11:10:52
84 15 他接着说道:要想留住雇员 2009-12-25 11:35:52
85 15 IT经理必须增加和雇员的互动 2009-12-25 11:36:52
86 15 让雇员了解公司前景 2009-12-25 11:37:52
87 16 IT经理要能设立出带有目的性的岗位 2009-12-25 11:38:52结果要求
id uid uname ucomment utime
1 1 天使之城 呵呵,我又来了! 2009-11-18 09:31:26
2 1 天使之城 小帅锅 2009-11-18 09:34:41
3 2 天使名妆 初来乍到 2009-11-19 12:27:26
4 2 天使名妆 漂亮宝贝 2009-11-19 12:45:11
6 3 天空之城 少林功夫! 2009-11-20 19:37:53
7 3 天空之城 真的好可爱、 2009-11-21 17:05:51
8 4 LULA 爱死个人的大宝宝 2009-11-21 20:05:34
9 4 LULA 双手轻轻捧起你的脸 2009-11-21 20:05:54
10 5 月光石 NULL NULL
11 6 霓裳物语 吹干你的泪眼 2009-12-23 09:59:29
`uid` int(11) NOT NULL auto_increment,
`uname` varchar(20) default NULL,
PRIMARY KEY (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8;/*Data for the table `a` */insert into `a`(`uid`,`uname`) values (1,'天使之城'),(2,'天使名妆'),(3,'天空之城'),(4,'LULA'),(5,'月光石'),(6,'霓裳物语'),(7,'百分一'),(8,'今天'),(9,'练习'),(10,'迟来的爱'),(11,'兄弟'),(12,'忘情水'),(13,'犯错'),(14,'何必在一起'),(15,'七年的爱'),(16,'摇摆'),(17,'天堂'),(18,'白雪'),(19,'独一无二'),(20,'至少还有你'),(21,'棉花糖');CREATE TABLE `b` (
`id` int(11) NOT NULL auto_increment,
`uid` int(11) default NULL,
`ucomment` varchar(50) default NULL,
`utime` varchar(20) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=88 DEFAULT CHARSET=utf8;/*Data for the table `b` */insert into `b`(`id`,`uid`,`ucomment`,`utime`) values (1,1,'呵呵,我又来了!','2009-11-18 09:31:26'),(2,1,'小帅锅','2009-11-18 09:34:41'),(3,2,'初来乍到','2009-11-19 12:27:26'),(4,2,'漂亮宝贝','2009-11-19 12:45:11'),(5,2,'可爱宝贝~!~','2009-11-20 11:55:02'),(6,3,'少林功夫!','2009-11-20 19:37:53'),(7,3,'真的好可爱、','2009-11-21 17:05:51'),(8,4,'爱死个人的大宝宝','2009-11-21 20:05:34'),(9,4,'双手轻轻捧起你的脸','2009-11-21 20:05:54'),(10,6,'吹干你的泪眼','2009-12-23 09:59:29'),(11,6,'梦还有空间','2009-12-24 10:47:55'),(12,6,'我的情感热切危险','2009-12-24 12:29:30'),(13,6,'多看你一眼就会点燃我心中无法扑灭的火焰','2009-12-24 18:21:27'),(14,7,'我不断失望','2009-12-24 18:23:28'),(15,7,'不断希望','2009-12-24 18:29:03'),(16,8,'苦自己藏笑与你分享','2009-12-25 17:02:55'),(17,8,'如今站在台上','2009-12-26 11:37:19'),(18,9,'地球自转一次是一天','2009-12-26 11:39:11'),(19,9,'那是代表多爱你一天','2009-12-26 11:40:21'),(20,9,'真善美的爱恋','2009-12-26 11:40:27'),(21,9,'没有局限,也没有缺陷','2009-12-26 11:41:29'),(22,10,'地球公转一次是一年','2009-12-26 11:41:35'),(23,11,'那时代表多爱你一年','2009-12-26 11:41:37'),(24,11,'恒久的地平线和我的心','2009-12-26 11:41:39'),(25,11,'永不改变','2009-12-26 11:41:44'),(26,13,'飞越了时间的局限,拉近地域的平面','2009-12-26 11:41:46'),(27,13,'紧紧的相恋','2009-12-26 11:41:50'),(28,13,'绿色上网过滤软件绿坝-花季护航','2009-12-26 11:41:52'),(29,14,'Cybersitter在起诉书中表示','2009-12-26 11:41:54'),(30,14,'绿坝两家生产商非法拷贝了','2009-12-26 11:41:56'),(31,14,'Cybersitter过滤软件逾3000条代码,','2009-12-26 11:41:57'),(32,15,'并与电脑生产商共同在中国及其他汉语地','2009-12-26 11:42:12'),(33,15,'区分销逾5600万张绿坝软件拷贝','2009-12-26 11:42:10'),(34,15,'严重侵犯了该公司的知识产权,','2009-12-26 11:42:17'),(35,16,'并给公司造成了巨大损失','2009-12-26 11:43:24'),(36,16,'据悉,该公司旗下名为Cybersitter的软件与绿坝一样','2009-12-26 12:51:54'),(37,16,'是一款旨在帮助父母对儿童上网内容进行过滤的软件','2009-12-26 12:51:56'),(38,17,'去年6月,工信部发布通知','2009-12-26 12:51:58'),(39,17,'要求从2009年7月1日起','2009-12-26 12:51:59'),(40,17,'在我国境内生产销售的计算机出厂前将预装绿坝','2009-12-26 12:52:01'),(41,18,'进口计算机在我国销售前也将预装该软件','2009-12-26 12:52:03'),(42,18,'由财政资金买断绿坝一年服务供全社会免费使用','2009-12-26 12:52:05'),(43,18,'绿坝的推出一直都伴随着争议','2009-12-26 12:52:07'),(44,18,'有的消费者担心绿坝是一种流氓软件','2009-12-26 12:52:09'),(45,18,'有的消费者担心绿坝会泄露个人隐私等','2009-12-26 12:52:28'),(46,19,'但令 绿坝最为尴尬的还要','2009-12-26 12:53:37'),(47,19,'属美国密歇根大学去年6月发布的一份研究报告。','2009-12-26 12:53:52'),(48,19,'密歇根大学对绿坝的这份研究报告称','2009-12-26 12:54:10'),(49,19,'绿坝包含多个安全漏洞,建议安装了的用户立即卸载','2009-12-26 13:12:43'),(50,19,'同时还指出绿坝中的部分代码存在侵权','2009-12-26 13:12:45'),(51,19,'与美国Solid Oak公司设计的软件相同。','2009-12-26 13:14:43'),(52,1,'Solid Oak是本次案件原告Cybersitter的母公司','2009-12-26 13:13:43'),(53,1,'随后Solid Oak声称将控告绿坝生产商','2009-12-26 13:17:43'),(54,2,'不过中方公司亦给与强硬回应。郑州金','2009-12-26 13:12:43'),(55,2,'惠公司总经理张晨民在接受本报记者专访时曾表示','2009-12-26 11:22:52'),(56,10,'推出绿坝是在做一件好事','2009-12-26 11:12:52'),(57,20,'绿坝与Cybersitter的黑名单地址库确有类似之处','2009-12-26 11:23:52'),(58,21,'但绿坝绝对不存在盗窃代码','2009-12-26 11:24:52'),(59,21,'知识产权律师姚克枫昨日分析','2009-12-26 11:25:52'),(60,20,'首先,由于此次纠纷发生地在中国','2009-12-26 11:26:52'),(61,18,'所涉及的企业也在中国','2009-12-26 11:27:52'),(62,18,'所以此次Cybersitter起诉地点存有一定争议','2009-12-26 11:28:52'),(63,17,'此外,22亿美元的赔偿金似乎也不合理','2009-12-26 11:29:52'),(64,17,'因为这款软件在推广过程中一直是在免费给社会使用','2009-12-26 11:30:52'),(65,17,'绿坝推广商及企业并非以盈利为主','2009-12-26 11:31:52'),(66,16,'而像这种跨国官司','2009-12-26 11:32:52'),(67,16,'非常耗时,拖上好几年是常有的事情','2009-12-26 11:33:52'),(68,19,'而数额如此巨大可一定程度凸显了原告有炒作嫌','2009-12-26 11:34:52'),(69,20,'2007年,约有12%的IT工作者属于高度专业人员,这个比值现在下降到了4%。','2009-12-26 11:35:52'),(70,20,'Corporate Executive Board信息技术','2009-12-26 11:36:52'),(71,19,'实践部的监管董事加米卡倍拉(Jaime Capella)','2009-12-26 11:37:52'),(72,15,'说道:这些都是比较挑剔的IT职员。','2009-12-26 11:38:52'),(73,14,'们也可能是第一批最有可能离开你公司的职员。','2009-12-26 11:39:52'),(74,11,'同样,非盈利研究组织Conference Board Inc.5日表示','2009-12-26 11:40:52'),(75,12,'去年对5000美国家庭的调查显示,','2009-12-26 11:41:52'),(76,11,'45%的屋主表示对现有工作表示满意','2009-12-26 11:42:52'),(77,13,'这比起1987年62%的比率下降不少。','2009-12-26 11:43:52'),(78,13,'来自医疗保险公司基础设施部副总裁迈克汉','2009-12-26 11:44:52'),(79,13,'根(Mike Hagan)说道:在IT类职业,','2009-12-26 11:45:52'),(80,14,'有许多处于压抑状态的不满','2009-12-26 11:46:52'),(81,14,'经济衰退让职员雇主摩擦降至了新低。','2009-12-26 11:47:52'),(82,14,'一旦经济恢复或是稳定','2009-12-25 11:30:52'),(83,15,'这些不满的职员会跳槽到别的工作岗位','2009-12-25 11:10:52'),(84,15,'他接着说道:要想留住雇员','2009-12-25 11:35:52'),(85,15,'IT经理必须增加和雇员的互动','2009-12-25 11:36:52'),(86,15,'让雇员了解公司前景','2009-12-25 11:37:52'),(87,16,'IT经理要能设立出带有目的性的岗位','2009-12-25 11:38:52');
SELECT a.id,a.ucomment,a.uid,a.utime FROM b a LEFT JOIN b c
ON a.uid=c.uid AND a.utime<=c.utime
GROUP BY a.id,a.ucomment,a.uid,a.utime
HAVING COUNT(c.id)<=5
ORDER BY uid) a2
ON a1.uid=a2.uid
where a1.id<=20
若是a.uid 在B表中出现过,可以查出
我想做的是,即使a.uid没在B表出现,也要查出相应的空记录
例如A表的uid=5,在B表未出现,但是也要查出相应的记录
uid uname ucomment utime
5 XXXX NULL NULL
(SELECT a.id,a.ucomment,a.uid,a.utime FROM b a LEFT JOIN b c
ON a.uid=c.uid AND a.utime <=c.utime GROUP BY a.id,a.ucomment,a.uid,a.utime
HAVING COUNT(c.id) <=5 ORDER BY uid) a2
ON a1.uid=a2.uid order by a.id asc limit 0,100
我想要的结果是:即使A表中的uid在B表里面不存在,也要查出相应的空记录,如:
uid uname ucomment utime
5 XXXX NULL NULL
不知道可否达到这样的效果
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
分组取最大N条记录方法征集,及散分(新年,升星)[
建表语句和表数据已经在4楼贴出
至于想达到的效果如:
id uid uname ucomment utime
1 1 天使之城 呵呵,我又来了! 2009-11-18 09:31:26
2 1 天使之城 小帅锅 2009-11-18 09:34:41
3 2 天使名妆 初来乍到 2009-11-19 12:27:26
4 2 天使名妆 漂亮宝贝 2009-11-19 12:45:11
6 3 天空之城 少林功夫! 2009-11-20 19:37:53
7 3 天空之城 真的好可爱、 2009-11-21 17:05:51
8 4 LULA 爱死个人的大宝宝 2009-11-21 20:05:34
9 4 LULA 双手轻轻捧起你的脸 2009-11-21 20:05:54
5 月光石 NULL NULL
11 6 霓裳物语 吹干你的泪眼 2009-12-23 09:59:29
12 6 霓裳物语 梦还有空间 2009-12-24 10:47:55
此处以取每个uid对应的前2条记录为例,需注意,B表中不存在uid=5的数据,但仍需查出来
上面列出的是理想效果,请大虾们指点
from a left join b t using(uid)
where 2>(select count(*) from b where uid=t.uid and utime<t.utime)
and a.uid<=6mysql> select t.id,a.uid,a.uname,t.ucomment,t.utime
-> from a left join b t using(uid)
-> where 2>(select count(*) from b where uid=t.uid and utime<t.utime)
-> and a.uid<=6;
+------+-----+----------+--------------------+---------------------+
| id | uid | uname | ucomment | utime |
+------+-----+----------+--------------------+---------------------+
| 1 | 1 | 天使之城 | 呵呵,我又来了! | 2009-11-18 09:31:26 |
| 2 | 1 | 天使之城 | 小帅锅 | 2009-11-18 09:34:41 |
| 3 | 2 | 天使名妆 | 初来乍到 | 2009-11-19 12:27:26 |
| 4 | 2 | 天使名妆 | 漂亮宝贝 | 2009-11-19 12:45:11 |
| 6 | 3 | 天空之城 | 少林功夫! | 2009-11-20 19:37:53 |
| 7 | 3 | 天空之城 | 真的好可爱、 | 2009-11-21 17:05:51 |
| 8 | 4 | LULA | 爱死个人的大宝宝 | 2009-11-21 20:05:34 |
| 9 | 4 | LULA | 双手轻轻捧起你的脸 | 2009-11-21 20:05:54 |
| NULL | 5 | 月光石 | NULL | NULL |
| 10 | 6 | 霓裳物语 | 吹干你的泪眼 | 2009-12-23 09:59:29 |
| 11 | 6 | 霓裳物语 | 梦还有空间 | 2009-12-24 10:47:55 |
+------+-----+----------+--------------------+---------------------+
11 rows in set (0.05 sec)mysql>
不过可否解释一下using(uid)在这里是做什么用的呢?