有没有办法在SQL中乘以结果?

时间:2019-10-24 17:57:41

标签: mysql sql select recurring

我正在建立一个从数据库填充的网站。我现在正在测试,我想查看包含大量数据的网站的外观(主要是为了观察性能,建立分页并解决呈现方面的任何问题)。我的表中有大约10条数据,这很好,但是我想在页面上显示大约2,000条数据。

有没有一种方法可以在同一查询中一次又一次地从同一SELECT * FROM table语句中读取数据,以便多次读取该表?

我可以通过将所有结果输入一个变量并多次回显该变量来做到这一点,但这不允许我设置LIMIT或为查询提供正确的行数。

我很惊讶我没有找到Googling做到这一点的方法。看来这将是一件简单的内置操作。

如果没有,您能建议我其他任何方式而无需修改原始表吗?

2 个答案:

答案 0 :(得分:2)

请使用交叉联接。交叉联接将为您提供联接表中的行的笛卡尔积。交叉联接可以在短时间内生成大量数据。对于广泛的测试很有用。

示例: 选择*从A 交叉连接B;

您也可以在同一张桌子上交叉联接。

答案 1 :(得分:1)

从MySQL 8开始,您可以使用递归查询使行变为多行:

with recursive cte (a, b, c) as
(
  select a, b, 1 from mytable
  union all
  select a, b, c + 1 from cte where c < 10 -- ten times as many
)
select a, b from cte;

(您当然可以在union all之后的部分中更改生成的值,例如:select a + 5, b * 2, c + 1 from cte where c < 10。)

演示:added support in WSL