MySQL,如何重复同一行x次

时间:2011-05-15 17:49:37

标签: mysql sql

我有一个输出地址订单数据的查询:

SELECT ordernumber
  , article_description
  , article_size_description
  , concat(NumberPerBox,' pieces') as contents
  , NumberOrdered
FROM customerorder
WHERE customerorder.id = 1;

我希望上面的行输出NumberOrders(例如50,000)除以NumberPerBox,例如2,000 = 25次。

是否有一个可以执行此操作的SQL查询,我不反对使用临时表加入,如果这就是它。

我检查了以前的问题,但最近的问题是:
is to be posible in mysql repeat the same result
只提供给出固定行数的答案,我需要它是动态的,具体取决于(NumberOrdered div NumberPerBox)的值。

我想要的结果是:

Boxnr   Ordernr        as_description   contents   NumberOrdered
------+--------------+----------------+-----------+---------------
  1   | CORDO1245    | Carrying bags  | 2,000 pcs | 50,000
  2   | CORDO1245    | Carrying bags  | 2,000 pcs | 50,000
....
  25  | CORDO1245    | Carrying bags  | 2,000 pcs | 50,000

1 个答案:

答案 0 :(得分:1)

首先,我要说我对SQL Server比较熟悉,所以我的回答有点偏差 其次,我没有测试我的代码示例,它应该可以作为参考点来开始。

在我看来,这种情况是数字表的主要候选者。简单地说,它是一个表(通常称为“数字”),它只不过是从1到n的单个PK整数列。一旦你使用了Numbers表并知道它是如何使用的,你就会开始找到它的许多用途 - 比如查询时间间隔,字符串拆分等等。

那就是说,这是我对你的问题未经测试的回复:

SELECT
   IV.number as Boxnr
  ,ordernumber  
  ,article_description
  ,article_size_description
  ,concat(NumberPerBox,' pieces') as contents
  ,NumberOrdered
FROM
  customerorder
  INNER JOIN (
    SELECT
       Numbers.number
      ,customerorder.ordernumber
      ,customerorder.NumberPerBox
    FROM
      Numbers
      INNER JOIN customerorder
        ON Numbers.number BETWEEN 1 AND customerorder.NumberOrdered / customerorder.NumberPerBox
    WHERE
      customerorder.id = 1
    ) AS IV
    ON customerorder.ordernumber = IV.ordernumber

正如我所说,我的大多数经验都在SQL Server中。我引用http://www.sqlservercentral.com/articles/Advanced+Querying/2547/(需要注册)。但是,当我搜索“SQL数字表”时,似乎有相当多的可用资源。