如何选择同一行的多个副本?

时间:2013-09-02 05:22:47

标签: sql ms-access

我在MS Access中有一个表,其中的行有一个名为“repeat”的列

我希望SELECT所有行,并按其“重复”列值进行复制。

例如,如果repeat是4,那么我应该返回4行相同的值。如果repeat是1,那么我应该只返回一行。

这与这个答案非常相似:

https://stackoverflow.com/a/6608143

除了我需要MS Access的解决方案。

3 个答案:

答案 0 :(得分:6)

首先创建一个“数字”表,并用1到1000之间的数字填充它(或者“重复”列可以具有的任何值):

CREATE TABLE Numbers
  ( i INT NOT NULL PRIMARY KEY
  ) ;

INSERT INTO Numbers 
  (i)
VALUES
  (1), (2), ..., (1000) ;

然后你可以使用它:

SELECT t.*
FROM TableX AS t
  JOIN
     Numbers AS n
       ON n.i <= t.repeat ;

答案 1 :(得分:1)

如果重复只有很小的值,您可以尝试:

select id, col1 from table where repeat > 0
union all
select id, col1 from table where repeat > 1
union all
select id, col1 from table where repeat > 2
union all
select id, col1 from table where repeat > 3
union all ....

答案 2 :(得分:0)

您可以做的是检索一个“唯一”行并将此行/列复制到一个字符串中,但需要使用for循环从中复制许多副本。