所以,
我对 MySQL DBMS 中的查询有疑问。我有repeats
数据表,例如:
+--------+-----+ | 记录 | 编号 | +--------+-----+ | 富 | 2 | +--------+-----+ | 酒吧 | 3 | +--------+-----+ | 巴兹 | 1 | +--------+-----+
这里record
字段包含一些数据(不相关,让它成为简单的字符串),num
字段包含结果集中当前行的重复次数。所以,我想导致:
富 富 酒吧 酒吧 酒吧 巴兹
即'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
表。因此,我的问题是:是否可以通过在单个 SQL 查询中重复行来实现我的目标,而无需创建临时数据结构?(因为它是 MySQL,所以变量的技巧也适用 - 我现在不知道如何做到这一点)。但是,回答“不,这是不可能的,因为 ..”也将受到欢迎。
我也怀疑这是一些“常见”问题,但不幸的是没有找到任何相应的信息。更新:这是一个类似的问题(但在同一时间 - 不完全相似,因为它也会导致我想避免的序列生成问题)