ID上重复插入副本

时间:2014-08-22 00:52:38

标签: php mysql

我们在唯一ID上有一个带有计数字段的记录。

列是:

mainId = unique
mainIdCount = 1320 (this 'views' field gets a + 1 when the page is visited)

如何在一个查询中将所有这些mainIdCount作为单独的记录插入另一个表中的另一个DBASE?

是的,我的意思是1320次使用相同的mainId插入! :-) 实际上我们的记录超过了id的10,000倍。它必须是这样的。

这是一个奇怪的,但我们确实需要所有这些(正义)计数的副本。

1 个答案:

答案 0 :(得分:0)

最简单的方法是在表和另一个提供一组整数的行源之间进行JOIN操作。我们将原始表中的每一行与整数集中的行匹配,以满足所需的结果。

作为模式的一个简短例子:

 INSERT INTO newtable (mainId,n) 
 SELECT t.mainId 
      , r.n
   FROM mytable t
   JOIN ( SELECT 1 AS n
          UNION ALL SELECT 2
          UNION ALL SELECT 3
          UNION ALL SELECT 4
          UNION ALL SELECT 5
        ) r
  WHERE r.n <= t.mainIdCount

如果mytable包含行mainId = 5 mainIdCount = 4,我们将返回行(5,1),(5,2),(5,3),(5,4)

显然,rowsource r需要足够大。我在这里演示的内联视图最多会返回五行。对于较大的集合,使用表而不是内联视图是有益的。

这导致了后续问题,“如何在MySQL中生成一组整数”,

e.g。 Generating a range of numbers in MySQL

完成这项工作有点单调乏味。我们期待MySQL中的最终功能可以更容易地返回一组有界的整数值;在此之前,拥有预先填充的表格是最有效的方法。