1

我有一个表格,内容如下:

+----+-----------+---------+--------+------+
| id | text_from | text_to |  text  | seen |
+----+-----------+---------+--------+------+
|  1 | A         | B       | Hello1 |    0 |
|  2 | X         | Y       | Hello2 |    1 |
|  3 | Y         | X       | Hello3 |    1 |
|  4 | B         | A       | Hello4 |    1 |
+----+-----------+---------+--------+------+

这是一个对话,例如 A 向 B 发送文本,B 向 A 发送等。我怎样才能获得 DISTINCT 对话?例如,A 和 B 或 X 和 Y 之间的不同对话等。

我想得到类似的东西

+----+-----------+---------+--------+------+
| id | text_from | text_to |  text  | seen |
+----+-----------+---------+--------+------+
|  1 | A         | B       | Hello1 |    0 |
|  2 | X         | Y       | Hello2 |    1 |
+----+-----------+---------+--------+------+

如果曾经 text_from 和 text_to 有两个唯一值,则不能重复。例如,如果有 text_from = A, text_to = B,则表不应该有 text_from = B, text_to = A。

几个小时以来,我一直在尝试 DISTINCT 和 GROUP BY 的几种方法,但找不到任何解决方案!任何建议将不胜感激。

4

1 回答 1

1

看起来像一个简单的NOT EXISTS应该做的伎俩。示例SQL 小提琴

select *
from table t
where not exists (
  select 1
  from table t1
  where
    (
      (t.text_from = t1.text_from
       and t.text_to = t1.text_to)
      or (t.text_from = t1.text_to
       and t.text_to = t1.text_from)
    ) and t.id > t1.id
  )
于 2013-10-06T04:12:29.773 回答