选择对一对(发送方,接收方)具有最高id的消息行进行选择,以任何顺序采用列。 即(发件人,收件人)或(收件人,发件人)
我的表格数据
_id sender receiver date message
1 rohan deepak 17-01-17 hell
2 rohan deepak 18-01-17 hello
3 deepak rohan 18-01-17 had i done
4 anand shivam 20-01-16 joke
查询:
Select * from `message` where _id IN (Select max(_id) from
`message` GROUP BY sender,receiver);
OR
查询:
Select * from `message` where _id IN (Select max(_id) from
`message` GROUP BY receiver,sender);
给出
_id sender receiver date message
1 rohan deepak 17-01-17 hello
3 deepak rohan 18-01-17 had i done
4 anand shivam 20-01-16 joke
在这里看到id 1& 3是同一对但它给出了不同的max _id所以我得到2行而不是1对(rohan,deepak)
我要求输出为:
_id sender receiver date message
3 deepak rohan 18-01-17 had i done
4 anand shivam 20-01-16 joke
因为3,4是唯一对的最大值(_id)
所以任何人都可以帮我解决这个问题。
答案 0 :(得分:0)
不确定效率最高,但您可以使用example = mongo.db.example
got_name = example.find({'name':1})
got_lastname = example.find({'lastname':1})
details = {'name' : got_name, 'lastname' : got_lastname}
return render_template('blabla.html', details=details)
两次调用您的表格,并更改发件人-receiver顺序:
{% for x in details}
<tr>
<td>{{ x.['name'] }}</td>
<td>{{ x.['lastname'] }}</td>
</tr>
{% endfor %}
类似对我有用,但我使用Oracle;你可能需要很少的调整。