组查询不会对相应的值进行估值

时间:2017-04-07 12:51:34

标签: mysql sql

我有一个查询,可以从最高顺序分组。我已经意识到它能够接收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会选择不同的值。

这是它从后端看起来的样子

enter image description here

并使用我的脚本

28

我明白了:

enter image description here

我得到最大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值并不对应。

2 个答案:

答案 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_idreciever_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