mysql - 如何从 SQL 中的两列数据中过滤唯一集

标签 mysql sql

我正在使用 MySQL 寻找可能的团队组合。

mysql> SELECT * FROM members;
+----------+-------+
| IDmember | Name  |
+----------+-------+
|        1 | John  |
|        2 | Harry |
|        3 | Kolb  |
+----------+-------+

然后应用这个:

SELECT t1.IDmember AS ID1
     , t2.IDmember AS ID2
     , t1.Name
     , t2.Name 
  FROM members t1 
  JOIN members t2 
 WHERE t1.IDmember != t2.IDmember;

但是仍然缺少 WHERE 条件以避免重复的组,例如 (2,1) 和 (1,2); (3,2) 和 (2,3); (1,3) 和 (3,1):

+-----+-----+-------+-------+
| ID1 | ID2 | Name  | Name  |
+-----+-----+-------+-------+
|   2 |   1 | Harry | John  |
|   3 |   1 | Kolb  | John  |
|   1 |   2 | John  | Harry |
|   3 |   2 | Kolb  | Harry |
|   1 |   3 | John  | Kolb  |
|   2 |   3 | Harry | Kolb  |
+-----+-----+-------+-------+

我怎样才能改进这个查询?

最佳答案

你很接近:

SELECT t1.IDmember AS ID1, t2.IDmember AS ID2, t1.Name, t2.Name
FROM members t1 INNER JOIN
     members t2 
     ON t1.IDmember < t2.IDmember;

即替换!=< .

编辑说明:如果您使用 INNER JOIN , 然后包括 ON条款。如果您将条件放在 WHERE 中, 然后使用 CROSS JOIN .我认为 MySQL 是唯一允许 INNER JOIN 的数据库没有 ON条款。

关于mysql - 如何从 SQL 中的两列数据中过滤唯一集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43571826/

相关文章:

php - 二叉树 child 计数 php mysql

php - 如何在php中动态显示博客列表

php - 将加权平均值添加到返回的mysql查询并将所有数据相加

sql - 有没有更有效的方法来编写此 SQL?

sql - 如何删除子表中的数据?

sql - 删除表中的随机行,但保留固定数量的条目

php - 将文本文件导入mysql

php - 在页面上显示新记录数

php - 使用 PHP 在 MySQL 中连接树表而不重复行

mysql - DELETE FROM table WHERE条件在其他表中满足