我们在唯一ID上有一个带有计数字段的记录。
列是:
mainId = unique
mainIdCount = 1320 (this 'views' field gets a + 1 when the page is visited)
如何在一个查询中将所有这些mainIdCount作为单独的记录插入另一个表中的另一个DBASE?
是的,我的意思是1320次使用相同的mainId插入! :-) 实际上我们的记录超过了id的10,000倍。它必须是这样的。
这是一个奇怪的,但我们确实需要所有这些(正义)计数的副本。
答案 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中的最终功能可以更容易地返回一组有界的整数值;在此之前,拥有预先填充的表格是最有效的方法。