4

所以,

我对 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,所以变量的技巧也适用 - 我现在不知道如何做到这一点)。但是,回答“不,这是不可能的,因为 ..”也将受到欢迎。

我也怀疑这是一些“常见”问题,但不幸的是没有找到任何相应的信息。更新:这是一个类似的问题(但在同一时间 - 不完全相似,因为它也会导致我想避免的序列生成问题)

4

0 回答 0