我有两个表:嵌套查询,子查询SQL
select * from friends;
user_id | friend_id | created_at
---------+-----------+----------------------------
user | user2 | 2017-01-09 21:29:56.31972
user | user3 | 2017-01-09 21:29:58.567925
user | user4 | 2017-01-09 21:30:01.200806
user2 | user | 2017-01-09 21:30:49.498912
user3 | user | 2017-01-09 21:30:53.549042
user4 | user | 2017-01-09 21:30:56.519135
id | user_id | user_from | message
----+---------+-----------+---------
1 | user | user2 | hey
2 | user | user3 | de
3 | user | user4 | bal
4 | user | user3 | ok
5 | user | user3 | nice
6 | user | user4 | cana
7 | user | user2 | doc
此SQL语句成功地检索的最后一条消息给一个用户。例如。通过用户3发送到用户
select id, user_from, message
from messages
WHERE user_id = 'user'
AND user_from = 'user3'
ORDER BY id DESC
limit 1;
id | user_from | message
----+---------+---------
5 | user3 | nice
的最后一条消息我需要检索信息的集合。每个消息表示由朋友发送到用户的最后一条消息
我需要的是通过标准化数据库,关系数据库的查询,使我得到这样的
id | user_from | message
----+-----------+---------
7 | user2 | doc
5 | user3 | nice
6 | user4 | cana
这不起作用:ERROR:SELECT DISTINCT ON表达式必须初始ORDER BY表达式 LINE 1匹配:SELECT DISTINCT ON(user_from)ID,user_from,消息 – user1000622
我修改与下面的查询选择... DISTINCT ON(user_from)id,user_from,来自消息的消息 WHERE user_id ='user'AND user_from ='user3' ORDER BY user_from,id DESC; id | user_from |消息 ---- + ----------- + --------- 5 | user3 |不错 – user1000622
但仍然没有达到我想要的。仅检索一行 – user1000622