根据某些列值复制一行?

时间:2009-12-10 19:27:18

标签: sql mysql

假设我有一个'用户'表,'user_id','name'和'multiplier'。

如果我进行基本选择,我会为每个用户获得一行:

SELECT * FROM users

我现在想做的是为每个用户获取mutiplier行。所以如果我在表格中说两个用户那些值

(1, 'user1', 1)
(2, 'user2', 6)

我想要的是一个选择,它会返回7行(1 x user1和6 x user2)

我意识到这在客户端很容易做到,但这将是一个更大的查询的一部分,我不能发送受影响的客户端上的数千行,然后乘以排序和每个我接下来要做的其他事情......

感谢任何可以提供帮助的人

2 个答案:

答案 0 :(得分:1)

我认为你最好发布你想要解决的全部内容,因为有可能比你想要做的更干净,但下面的代码应该做你需要的。我在这里使用Numbers表。您可以将其创建为表变量或永久表或临时表,但这个想法保持不变:

SELECT
     U.user_id,
     U.name,
     U.multiplier
FROM
     Users AS U
INNER JOIN Numbers AS N ON
     N.number BETWEEN 1 AND U.multiplier

答案 1 :(得分:0)

你能用临时表做吗?在客户端使用正确的行数构建users表的副本,然后将大的长查询加入到该表而不是users表中。