0

mysqlテーブルを使用して2つの列から値を取得するクエリを作成する必要があります

私のテーブルには次の構造があります

| 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";

しかし、私はテーブルiamから最新のレコードを取得していませんnull値を取得しています

助けて

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 の日付関数を使用する必要があります。

于 2012-05-11T18:05:34.500 に答える
0

あなたのクエリは ".....date=2012-05-11";" を求めていますが、あなたのテーブルには date という名前のフィールドがありませんか? もしかして datetime ですか? もしそうなら、"..... datetime like '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 に答える