0

我需要编写一个查询来使用 mysql 表从两列中检索值

我的桌子有以下结构

| ID |  user_id   |        datetime     |        message     | 
| 1  |     21     | 2012-05-10 04:13:01 |        message1    |  
| 2  |     07     | 2012-05-10 04:17:51 |        message2    |  
| 3  |     21     | 2012-05-11 04:21:51 |        message3    | 
| 4  |     21     | 2012-05-11 04:43:51 |        message4    | 
| 5  |     07     | 2012-05-11 04:21:51 |        message5    | 
| 5  |     21     | 2012-05-11 04:43:51 |        message6    | 

我写了以下查询

$query="SELECT MAX(datetime) FROM messageswhere user_id=21 and date=2012-05-11";

但我没有从表中获取最新记录我得到空值

帮助我们

4

5 回答 5

1

您应该使用DATE(date)来获取时间戳的日期。MySQL 函数DATE()只提取没有小时、分钟和秒的日期。

这是您的查询:

SELECT MAX(datetime) 
FROM messages
WHERE user_id = 21 AND DATE(date) = '2012-05-11'
于 2012-05-11T18:06:04.327 回答
1
$query="SELECT MAX(datetime) FROM messages where user_id=21 and date LIKE '2012-05-11%'";
于 2012-05-11T18:06:11.560 回答
0

您是否尝试过以下操作?

$query="SELECT MAX(datetime) FROM messages where user_id=21";

更新: 在您的问题中,您没有指定是否要检索某个日期的最后一条记录。如果你这样做,你需要使用 MySQL 的date函数。

于 2012-05-11T18:05:34.500 回答
0

您的查询要求 ".....date=2012-05-11";" 但您的表没有名为 date 的字段?您的意思是日期时间吗?如果是这样,您可能想尝试 ".....日期时间如'2012-05-11%'";

于 2012-05-11T18:09:31.427 回答
0

您在寻找最新的记录吗?你可以用一个子查询来得到这个:

$query = "SELECT * FROM messages WHERE datetime = (SELECT MAX(datetime) FROM messages)";
于 2012-05-11T18:11:18.837 回答