查询以获取两列的最大ID

时间:2017-01-18 18:58:17

标签: mysql sql group-by

选择对一对(发送方,接收方)具有最高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)

所以任何人都可以帮我解决这个问题。

1 个答案:

答案 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;你可能需要很少的调整。