bugfree安装使用~~搞定!

[推荐] 考考大家一个问题——SQL能力

上一篇 / 下一篇  2009-12-03 10:23:32

两个表.

tb1(五千万条记录)
zkzh --准考证号,
th  --题号
da  --考生答案

tb2(100条记录)
th  --题号
da  --标准答案
fs  --分数

tb1:zkzh + th 主键
tb2:th 主键
两表目前除主键无其他索引.

现在问:要得到每个考生每个题所得的分数.
条件 tb1.th = tb2.th and tb1.da = tb2.da
如果才能最快(或者较快)得到结果.

以下是两钟方案
方案一:
在tb1,加个字段fs,默认为0
update tb1 set fs = tb2.fs from tb1 , tb2 where tb1.th = tb2.th and tb1.da = tb2.da

方案二:
新建一个表,tb3 (zkzh , th , da , fs)
insert into tb3 select m.* , case when tb1.da = tb2.da then tb2.fs else 0 end from tb1 , tb2 , where tb1.th = tb2.th

各位观众认为那个方案好.或者有更好的其他方案.

TAG:

wentise的个人空间 引用 删除 wentise   /   2010-02-11 06:41:06
是否有没答案情况?
SELECT
`tb1`.`zkzh`,
`tb1`.`th`,
`tb1`.`da`,
ifnull(`tb2`.`fs`,0)
FROM
`tb1`
Left Join `tb2` ON `tb1`.`th` = `tb2`.`th` AND `tb1`.`da` = `tb2`.`da`
 

评分:0

我来说两句

日历

« 2024-04-30  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 85210
  • 日志数: 111
  • 图片数: 1
  • 建立时间: 2009-09-21
  • 更新时间: 2010-05-31

RSS订阅

Open Toolbar