mysql - SQL 限制组合集

标签 mysql sql combinations restrict

我有一个包含 A、B、C 列的表,我想获取具有唯一的 {B,C} 记录的所有组合。 即B值和C值在一组中只出现一次。

您有什么想法可以实现这一目标吗?我假设输出必须在一行上包含一个组合,这不是问题。

为了清楚起见,这里有一个例子:

  • 1,1,0
  • 6,1,1
  • 1,1,2
  • 3,2,0
  • 5,2,1
  • 1,2,3

一种可能的组合是 {1,1,0},{1,2,3},而 {6,1,1},{5,2,1} 则不是,因为 C 列值“1” '并不是唯一的。我想要得到的是这样的输出:

1,1,0,1,2,3

6,1,1,1,2,3

IOW,输出将是具有唯一 B、C 值的 n 元组。

最佳答案

我认为你想要一个奇怪的自连接版本:

select t1.*, t2.*
from table t1 join
     table t2
     on t1.b <> t2.b and t1.c <> t2.c;

这将返回表中 b 列具有不同值且 c 列具有不同值的所有对。

关于mysql - SQL 限制组合集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25018976/

相关文章:

MySQL - 当更新命令被中断时会发生什么?

php - Laravel 从集合中获取一个字段的另一个字段值

MYSQL 语法错误 - 为什么会发生这种情况?

mysql - 使用语法创建 MYSQL 表/定义字段时遇到困难

php - 从 MySQL 数据库列中选择最大数字并填充 0?

R:如何获得 2 个向量的唯一成对组合

mysql - 意想不到的性格。 (在位置 1093 的 ":"附近)

php - 如何调试不再有效的 PHP/SQL 代码?

C 中的 Char 置换算法,将输出存储在数组中

python - 组合条件语句排列的最佳方法