mysql - 在mysql中选择不同的记录

标签 mysql sql

我的 table

ANONYMOUS
ONE   TWO
1      2
2      1
1      2
3      1

现在我想选择不同的一组和两个。 我选择的列表应该是

ANONYMOUS
    ONE   TWO
    1      2
    3      1

最佳答案

你的问题不是很清楚,但我猜你的意思是:

SELECT DISTINCT one, two
FROM yourtable AS T1
WHERE one <= two
OR NOT EXISTS
(
     SELECT *
     FROM yourtable AS T2
     WHERE T1.one = T2.two
     AND T1.two = T2.one
)

它找到带有 (one, two) 的行其中反向对 (two, one)不存在。如果两者都存在,它会选择满足 one < two 的对.它还会选择值相等的行。

在线查看它:sqlfiddle

如果您更愿意使用 JOIN而不是 NOT EXISTS你可以这样做:

SELECT DISTINCT T1.one, T1.two
FROM yourtable AS T1
LEFT JOIN yourtable AS T2
ON T1.one = T2.two
AND T1.two = T2.one
WHERE T1.one <= T1.two
OR T2.one IS NULL

在线查看它:sqlfiddle

关于mysql - 在mysql中选择不同的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11171067/

相关文章:

MySQL查询中的PHP变量WHILE字符串中断

sql - 如何将复合主键插入到另一个表中?

mysql - 查询选择在日期范围之间有重复数据

mysql - 在 SQL 数据库表中,为什么冗余数据通常是一件坏事?

php - Android - 如何使用 PHP 从 MySQL 数据库获取响应?

mysql - 为什么要在 MySQL 中使用 EXISTS() 函数?

mysql - group by 无法正确连接两个表

php - 将数组插入mysql数据库

sql - SQLite 是否支持公用表表达式?

sql - Oracle - 自动创建回滚脚本