3

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

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

| ID | to_user_id | from_user_id |  message  |        datetime     | 
| 1  |     21     |      07      |    hi     | 2012-05-10 04:13:01 | 
| 2  |     07     |      21      |   hello   | 2012-05-10 04:17:51 | 
| 3  |     21     |      11      | what's up | 2012-05-10 04:21:51 |
| 4  |     21     |      02      |  hi dude  | 2012-05-10 04:43:51 |

すべてのfrom_user_idから最新のメッセージのみを取得するクエリを作成したい

でやってみます

$query="select * from messages WHERE datetime = (SELECT MAX(datetime) FROM messages)";

エラーが表示されています

'where句'の不明な列'datetime'

4

2 に答える 2

6
select t1.from_user_id, t1.message
from t1
join (
select from_user_id, max([datetime]) as [datetime]
from t1
group by from_user_id
) t2 on t1.from_user_id = t2.from_user_id
and t1.[datetime] = t2.[datetime]
于 2012-05-10T20:46:13.980 に答える
1

あなたも試すことができます:

select a.from_user_id, a.message
from table1 a
WHERE a.datetime = (SELECT MAX(datetime) FROM table1 x WHERE x.from_user_id = a.from_user_id)
于 2012-05-10T20:53:44.900 に答える