2011-07-23 47 views
1

我有一個表叫foo的列如下所示:添加一個自動遞增列的MySQL數據庫是不是主鍵

id 
usedId (id of the person who posted this foo) 
title 
postedDate 

我想要做什麼,是添加另一列稱爲position,這將記錄用戶發佈了多少個foo。例如,他的第一個發佈foo將有1的位置,第二個將有2,第100個將有100,依此類推。但是這個位置僅限於userId

有沒有辦法給mysql添加這樣的列,或者我必須以編程方式計算位置?

回答

2

計算其務實是保持你的數據庫規範化的最佳方法,因爲您不應該存儲任何可以稍後計算的數據。您應該通過postedDate進行排序,然後在每次迭代時計算您的位置。

但是,如果您打算繼續此操作,則必須使用子查詢來計算用戶已擁有的行數。因此,這將是你的插入查詢的一部分:

[..], position = (SELECT COUNT(*) + 1 FROM foo WHERE userId = $userId), [..] 

子查詢將只返回已在表中與ID $ userid用戶的行數,並通過一個加一。

1
insert into foo (id, usedId, title, postedDate, position) 
values (
1, 2, 'title', '2011-07-23', (select count(*) + 1 from foo where usedId = 2) 
) 
相關問題