我正在創建這個應用程序,在當前日期活動或不活動的人員註冊時很重要。我的表格結構如下所示:MySQL問題!只需要從一行中選擇唯一的值
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+-------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| kid_id | int(11) | NO | | NULL | |
| status | varchar(50) | NO | | NULL | |
| timestamp | timestamp | NO | | CURRENT_TIMESTAMP | |
對我而言重要的是什麼;僅選擇時間戳等於當前日期的值。接下來,我需要根據kid_id檢查最新狀態是否爲「活動」或「非活動」。我到目前爲止已經弄清楚了這一點。
SELECT kid_id , status , timestamp FROM actions WHERE date(timestamp) = CURDATE() ORDER BY timestamp DESC;
它返回這些值:
+--------+----------+---------------------+
| kid_id | status | timestamp |
+--------+----------+---------------------+
| 4 | active | 2010-08-23 12:10:03 |
| 3 | inactive | 2010-08-23 10:53:18 |
| 3 | active | 2010-08-23 10:53:10 |
+--------+----------+---------------------+
現在唯一的問題是,我收到都與 「kid_id」= 「3」 活動和非活動狀態。 所以我的問題是我如何只選擇每個kid_id的最新狀態。
提前非常感謝您的幫助。非常感謝。
----------編輯
我會盡量讓我的觀點更加清楚一點。
這是我的表,因爲它看起來現在...
+--------+----------+---------------------+
| kid_id | status | timestamp |
+--------+----------+---------------------+
| 3 | inactive | 2010-08-23 18:32:19 |
| 4 | active | 2010-08-23 12:10:03 |
| 3 | active | 2010-08-23 10:53:10 |
+--------+----------+---------------------+
3 rows in set (0.00 sec)
我想檢索這些值只有這些
| 3 | inactive | 2010-08-23 18:32:19 |
| 4 | active | 2010-08-23 12:10:03 |
以下所有建議的解決方案返回這些值:
| 4 | active | 2010-08-23 12:10:03 |
| 3 | active | 2010-08-23 10:53:10 |
順便說一下......非常感謝所有的答覆,我很感激所有的hel頁。
如果我理解你的代碼正確,這隻返回活躍的孩子,而不是不活躍的孩子。如果我按時間戳排序,我可以得到所有值,但是我仍然無法消除kid_id 3的最後一個活動狀態...如果有任何錯誤,請糾正我。 – nickifrandsen 2010-08-23 11:35:09
啊好吧我錯了,對不起。那麼shamittomar的代碼應該做你想做的事 – Nicolas78 2010-08-23 11:46:24