इसे आज़माएं:
संदेशों से चुनें *जहां मौजूद नहीं है (संदेशों से 1 चुनें mmwhere (mm.fromuser =m.fromuser या mm.fromuser =m.touser) और (mm.touser =m.touser या mm.touser =m.fromuser) और mm.timestamp>
m.timestamp) और m.fromuser ='user1' या m.touser ='user1';
यह शायद बेहतर होगा, आगे जाकर, दो उपयोगकर्ताओं के बीच बातचीत को एक विशेष बातचीत के रूप में फ़्लैग करना, फिर प्रत्येक संदेश एक वार्तालाप से संबंधित होता है, और इस प्रकार उन वार्तालापों को ढूंढना बहुत आसान हो जाता है जिनमें उपयोगकर्ता शामिल है, और इससे संबंधित संदेशों के बारे में जानकारी बातचीत। वैसे भी।
इसके बजाय इसे आजमाएं। उह।
select m.*
from messages m
left join messages m2
on ((m.fromuser = m2.fromuser and m.touser = m2.touser)
or (m.fromuser = m2.touser and m.touser = m2.fromuser))
and m.timestamp < m2.timestamp
where (m.fromuser = 'user1' or m.touser = 'user1')
and m2.id is null;
यह not exists
. से बेहतर होने की संभावना है संस्करण, भले ही मैं इसे ठीक करने का प्रबंधन करता हूं।
यह बेला वास्तव में काम करती है