我想删除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)