2009-12-10 109 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

你可以用臨時表嗎?在客戶端使用正確的行數構建用戶表的副本,然後將大長查詢連接到該表而不是用戶表。

相關問題