【问题标题】:select count(*) multiple rows and display result选择 count(*) 多行并显示结果
【发布时间】:2011-10-08 07:08:25
【问题描述】:

我必须创建一个包含 SELECT COUNT 的 UPDATE 表,但这需要的时间太长。 那是我最初的查询

 UPDATE list SET count = 
 (SELECT COUNT(*) FROM set_1 WHERE set_1.start BETWEEN list.start AND list.end); 

我只有 100 行要更新,所以我想只做一个选择计数并将其显示在屏幕上。然后我会将结果复制/粘贴到我的 Excel 电子表格中。

我打算这样做,但它只返回一个数字(而不是 100 行数字)

 SELECT COUNT(*) FROM set_1,list WHERE set_1.start BETWEEN list.start AND list.end;

但这不起作用,它会一起返回所有 SELECT COUNT 中的一个大数字..

任何人都可以帮助我解决这个问题吗?

【问题讨论】:

  • 您的意思是您只想编辑 100 行吗?

标签: mysql select count rows


【解决方案1】:

你在 set1 和 list 之间做一个笛卡尔积

select        
   (SELECT COUNT(*) FROM set_1 
         WHERE set_1.start BETWEEN list.start AND list.end) as [count]
from list

【讨论】:

  • true .. 我刚试过,但我认为这样会更快。如果我在一行上只做一个选择计数(*),则需要 0.02 秒。如果我查询 10 行,则需要 1 分 6.07 秒。所以 100 行它呈指数增长。我不明白为什么时间会成倍增加..
  • 在 set_1 表上为 set_1.start 列添加索引,看看会发生什么
  • 可能select count(1)会更快,我对mysql不熟悉
  • @Adrian Iftode : 我还没试过 select count(1) 现在试试~~谢谢
  • @Adrian Iftode : select count(1) 实际上有点慢(在 10 行上测试过)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-27
相关资源
最近更新 更多