说我有一个表'users',具有'user_id','name'和'multiplier'。

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

SELECT * FROM users


我现在想做的是为每个用户获取mutiplier行。因此,如果我在表中说了两个用户,那么这些值

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


我想得到的是一个选择,该选择将返回7行(1 x user1和6 x user2)

我意识到这在客户端很容易做到,但这将是更大的查询的一部分,而且我负担不起发送客户端上受影响的数千行然后进行乘法和排序以及其他所有操作接下来要做...

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

最佳答案

我认为您最好发布要解决的全部问题,因为可能有比您想做的事情更清洁的方法,但是下面的代码可以满足您的需要。我在这里使用数字表。您可以将其创建为表变量,永久表或临时表,但思路保持不变:

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

关于sql - 根据某些列值复制行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1883362/

10-09 19:23