0
我有一個問題,這個問題對我來說很複雜,但對於你們中的一些人來說,這很容易。 這就是: 我有一個MySQL表像這樣按照時區從sql表中進行排序和選擇
id | username | time_zone | selected
1 XXX +4 1
2 XXX -6 0
3 XXX NULL 1
等。行數可以超過一百萬。 (請注意,可能有用戶的時區未定義。) 有一個PHP腳本,它通過cron作業每小時運行一次,並從表中選擇一定數量的行。 現在是困難的部分。
- 從表中選擇的行數必須等於每小時。 (
amount selected = COUNT()/24
) - 每一行不得超過一天選擇一次(這就是爲什麼我在表格中添加「selected」列的原因)。
- 當他們的當地時間從下午1點到下午5點時,必須選擇每個用戶。
- 如果用戶的時區未定義,則必須從5PM至8PM選擇它們。
- 如果用戶數量不夠特定時間,例如具有時區+4的用戶計數小於
COUNT()/24
,可以用未定義的用戶或來自相鄰時區的用戶來補償相等性。 - 如果有許多用戶在指定的時間,他們可以傳遞到下一個鄰居時區。
我不需要代碼,但邏輯。如果有人能幫助我,我會很滿。如果有任何問題,我可以更詳細地瞭解。
該腳本目前的外觀如何? – Vector 2013-05-09 18:35:46
我還沒有腳本,因爲我甚至不知道從哪開始。在我剛剛從表格中選擇「COUNT()/ 24」來限制選擇的數量之前,現在我添加了時區並且卡住了。當選擇時,我選擇'selected'列爲1而不是選擇該行兩次,並在一天結束時一切都被更新爲0 – 2013-05-09 18:38:28
如果您有3個或更多個時區,每個時區更多比COUNT()/ 24行?也許如果你解釋了爲什麼行應該在當地時區下午1點到5點之間選擇,有人可能會提出一個更簡單的選擇。 – Trevor 2013-05-09 19:24:48