php - MySQL 中两列的不同值

标签 php mysql sql database distinct

我有一个包含如下内容的表格:

+----+-----------+---------+--------+------+
| 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 的几种方法,但找不到任何解决方案!任何建议将不胜感激。

最佳答案

似乎一个简单的 NOT EXISTS 应该可以解决问题。示例 SQL Fiddle

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
  )

关于php - MySQL 中两列的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19205198/

相关文章:

php - 触发器删除表,然后用 Mysql 插入值

php - 使用Ajax+php在mysql表中同时添加多条记录

php - mysql_escape_string() 有什么作用?

mysql简单连接

php - 根据时间间隔选择行

sql - 如何在字符串中动态确定的位置选择动态数量的子字符串?

php - 从 Swift 到 php 脚本的 Http post 请求

php - 在 PHP 中定义一个全局变量

javascript - 尝试根据选择选项从数据库自动填充输入字段时出现错误

c# - c#查询结果中记录计数