2010-02-18 72 views
0

我有一堆ID。 我可以每天指定一次。groupby msql查詢

我需要查詢我的數據庫,看看他們是否有任何ID可用於分發(如果我沒有在24小時內分發它們),並且如果有任何可用的,寫一個新行到數據庫說這個ID已經發出。我還需要知道哪個用戶在某個時間持有哪個ID。

我可以想出解決的唯一方法是通過創建兩個表 - 一個active_ids(包含誰的權利現在擁有某個特定的ID)和一個id_records(包含誰擁有ID的當前和過去)。 然後我會這樣說:

UPDATE active_ids SET user_id=xyz WHERE UNIX_TIMESTAMP(current_timestamp) - UNIX_TIMESTAMP(date) > 84600 LIMIT 1; 

,然後另一個的Pusing記錄id_records與數據。

有沒有辦法可以用一張桌子做到這一點? 我正在使用PHP和MySQL。

謝謝!

回答

1

當然,只要用戶標識符不是實際的主鍵,您可以爲所有user_id創建創建時間戳,然後使用基於時間的查詢進行搜索以查看可用的。

0

您可以使用DATE類型的「日」列和「user_id」列,並使用(day,user_id)的組合主鍵。

或者我懷疑可能是一個更好的主意:有一個真正唯一的ID,然後調用非唯一ID代替「訪問代碼」,並有一個複合的唯一約束。