SO,
我在MySQL DBMS中有一个关于查询的问题。我有表repeats
的数据,如:
+--------+-----+ | record | num | +--------+-----+ | foo | 2 | +--------+-----+ | bar | 3 | +--------+-----+ | baz | 1 | +--------+-----+
此处record
字段包含一些数据(不相关,让它成为简单的字符串),num
字段包含结果集中当前行的重复次数。所以,我想导致:
foo foo bar bar bar baz
即。 'foo'
重复'bar'
次,'baz'
- 三次,CREATE TABLE `natural` (
`id` int(11) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB
- 一次。
好的,现在我试过了。我创建了一个表:
1
- 然后填充自然数字,从MAX(num)
到repeats
来自SELECT
`repeats`.record
FROM
`natural`
LEFT JOIN `repeats`
ON `natural`.id<=`repeats`.num
WHERE
`repeats`.record IS NOT NULL
表。在此之后,我可以通过以下方式实现我的目标:
natural
- 这很好用,但我不想使用{{1}}表。所以,我的问题是:是否有可能通过在单个SQL查询中重复行来实现我的目标,而无需创建临时数据结构? (因为它是MySQL,带变量的技巧也适合 - 我现在根本不知道如何做到这一点)。但是,回答'不,这是不可能的,因为......'也会受到欢迎。
我还怀疑这是一个“常见”问题,但遗憾的是没有找到任何相应的信息。更新:here is类似的问题(但同时 - 不是完全相似,因为它也会导致我想避免的序列生成问题)