我想删除mysql数据库中的任何非对称列值
我希望结果是我想删除mysql数据库中的任何非对称列值,mysql,Mysql,我希望结果是 SELECT * from message m , message_viewer v where m.id = v.message_id group by m.author_id , v.viewer_id, m._date id | author_id | viewer_id | read 1 | 103 | 102 | 0 2 | 102 | 103 | 1 3 | 101 | 103 | 0
SELECT *
from message m , message_viewer v
where m.id = v.message_id
group by m.author_id , v.viewer_id, m._date
id | author_id | viewer_id | read
1 | 103 | 102 | 0
2 | 102 | 103 | 1
3 | 101 | 103 | 0
4 | 103 | 101 | 0
由于您希望通过作者和观众的独特组合来聚合结果,因此这里有一个选项使用
最小值
和最大值
:
id | author_id | viewer_id | read
1 | 103 | 102 | 0
4 | 103 | 101 | 0
这将应用
max
聚合来返回消息id——没有它,您只会收到返回的任意结果。您的问题也不清楚read
列来自何处。您有一个groupby
但没有聚合功能,因此groupby
为每个组返回的行是任意的。这是你想要的吗?
select max(m.id) as id,
least(m.author_id, mv.viewer_id) as author_id,
greatest(m.author_id, mv.viewer_id) as viewer_id
from message m
join message_viewer mv on m.id = mv.message_id
group by least(m.author_id, mv.viewer_id),
greatest(m.author_id, mv.viewer_id)