2009-12-10 67 views
0

假设我有一个'用户'表,'user_id','name'和'multiplier'。根据某个列值重复一行?

如果我做一个基本的选择,我得到一排为每个用户:

SELECT * FROM users 

我想现在要做的,是让mutiplier行为每个用户。所以,如果我说我的表中的两个用户,其这些值

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

我想得到的是一个选择,将返回我7行(1×user1和6×用户2)

我知道这在客户端很容易做到,但是这将成为一个更大的查询的一部分,我不能发送成千上万的受客户端影响的行,然后进行乘法和排序,以及其他所有事情下一步做...

感谢任何人可以帮助

回答

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 
+0

想给额外的加号“我认为你会更好张贴你正试图解决的全部问题,因为有可能比你想要做的更干净的方式“......许多开发人员有一个坏习惯,通过制造自己的”问题“来造成自己的困难。 – 2009-12-11 08:29:50

0

你可以用临时表吗?在客户端使用正确的行数构建用户表的副本,然后将大长查询连接到该表而不是用户表。

相关问题