簡體   English   中英

需要MySQL幫助

[英]Need MySQL help

我在使用SQL查詢時遇到了一些麻煩。 這就是為什么我希望你們中的一些人能夠為我提供幫助。

我有一個查詢,該查詢從每個關系ID中選擇最新條目,但我想選擇狀態不同的最新條目。 該表如下所示。

+-----------+-------------+------+-----+-------------------+----------------+
| 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 |                |
+-----------+-------------+------+-----+-------------------+----------------+

我當前的查詢如下所示。

SELECT * 
            FROM (
                SELECT * 
                FROM actions 
                AS a
                WHERE date(timestamp) = curdate() 
                AND timestamp = (
                    SELECT max(timestamp) 
                    FROM actions 
                    AS b
                    WHERE a.kid_id = b.kid_id
                    )
                )
            AS c
            ORDER BY kid_id

結果看起來像這樣:

id  kid_id  status  timestamp
54  1   Kommet  2010-09-15 00:14:51
57  2   Gået    2010-09-15 00:17:58
56  3   Kommet  2010-09-15 00:15:00

問題是,在kid_id等於2的情況下,我想查看最新的條目,其中status =“ Kommet” ....

我想要每個孩子的2條最新記錄。 狀態為“ Kommet”的第一條記錄,狀態為“Gået”的第二條記錄

在此先感謝您的幫助...非常感謝:)

如果您不擔心獲取ID,那么可以運行以下命令:

SELECT kid_id, status, MAX(`timestamp`) as `timestamp`
FROM actions
WHERE DATE(`timestamp`) = CURDATE()
GROUP BY kid_id, status

如果您需要id ,那么tou不能只是添加到SELECT列表中,因為GROUP BY將拉出匹配的id之一顯示在此處,而不一定是與MAX(timestamp)匹配的id。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM