gpt4 book ai didi

MySQL 两列的不同组合

转载 作者:行者123 更新时间:2023-11-29 08:07:20 25 4
gpt4 key购买 nike

考虑下表:

 A | B | ...
-------------
1 | 1 | ...
1 | 1 | ...
1 | 9 | ...
3 | 1 | ...
3 | 2 | ...

只有当 A 和 B 的组合尚未出现时,我才想将每一行视为不同的。因此,除了前两行之外,每一行都是不同的。然后我想抓取每个不同条目的整行。

我知道我可以重组表以拥有从 A 和 B 创建的 id,这将使这变得更容易,但如果可能的话我想避免这种情况。我不太擅长 MySQL 查询,所以我不知道从哪里开始这样的事情。

这样的查询可能吗?如果是这样,请解释该查询是什么以及它是如何工作的。否则请解释为什么这是不可能的,并告诉我最好的解决方案是什么。

编辑:

我意识到我的措辞不清楚。我说过我想捕获每一个不同的条目,但这是不正确的。我的意思是我想要每个不同的条目,然后我也只想要每个非独特条目中的一个。我仍然想要前两行中的一行,并且得到哪一行并不重要。

最佳答案

您可以在 MySQL 中使用 group by 扩展来执行此操作:

select t.*
from table t
group by a, b
having count(*) = 1;

having 子句计算匹配行的数量,并且仅包括唯一的行。

顺便说一句,这是一个很好的例子,其中 MySQL 分组扩展很有用。

编辑:

您也可以在不使用扩展的情况下表达这一点,并且使用 table(A, B) 上的索引可能会更有效:

select t.*
from table t
where 1 = (select count(*) from table t2 where t2.a = t.a and t2.b = t.b);

编辑:

您仍然可以使用group by扩展:

select t.*
from table t
group by a, b;

请注意,文档保证select中的所有列都来自同一行。实际上,它们确实来自相同但任意的行。

如果没有唯一标识符,则无法使用 exists 方法执行此操作。您可以使用变量来做到这一点,但上面的应该没问题。

关于MySQL 两列的不同组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22439675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com