我有一个查询,可以从最高顺序分组。我已经意识到它能够接收Internal receiver for FirebaseInstanceId used to start services securely. This receiver is automatically added to your application's manifest file via manifest merge. If necessary it can be manually declared via:
<receiver
android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver"
android:exported="false" />
好,但ids
字段的值与vmsg
的值不对应。
例如id
的ID与28
&#39; hello&#39;相对应。但是在运行查询后,vsmg
会选择不同的值。
这是它从后端看起来的样子
并使用我的脚本
28
我明白了:
我得到最大SELECT
MAX(id) as id, vmsg, sender_id, fname, lname, profile_pix, profile.profile_id
FROM
chats
LEFT JOIN
profile
ON
chats.sender_id = profile.profile_id
WHERE
reciever_id = 1
GROUP BY
(sender_id)
,但ids
值并不对应。
答案 0 :(得分:1)
如果您需要获取与MAX(id)
相对应的数据,则可以修改您的查询:
SELECT
c.id, c.vmsg, c.sender_id, c.fname, c.lname, p.profile_pix, p.profile_id
FROM
chats c
LEFT JOIN
profile p
ON
c.sender_id = p.profile_id
WHERE
c.reciever_id = 1
AND
c.id
IN (
SELECT
MAX(c.id) as id
FROM
chats c
GROUP BY
c.sender_id
)
这将仅获取与MAX(id)
对应的数据。
答案 1 :(得分:0)
我的策略:您将获得关于聊天的所有原始内容,其中id_sender_id
和reciever_id
的ID是最大值(所以不会存在这对夫妇的下一行)
试试这个:
SELECT id,vmsg,sender_id,fname,lname,profile_pix,profile.profile_id
FROM chats c LEFT JOIN profile p
on chats.sender_id = profile.profile_id
WHERE NOT EXISTS
(SELECT 'NEXT' FROM chat c2
WHERE c2.id_sender_id = c.id_sender_id
AND c2.reciever_id = c.reciever_id
AND c2.id > c.id)
AND reciever_id = 1