85

你能得到一个数据库表中 2 个不同字段的不同组合吗?如果是这样,您能否提供 SQL 示例。

4

5 回答 5

130

简单地说:

select distinct c1, c2 from t

或者

select c1, c2, count(*)
from t
group by c1, c2
于 2008-10-10T20:33:58.617 回答
16

如果您只想从两个字段中获得不同的值,并返回其他字段,那么其他字段必须对它们进行某种聚合(总和、最小值、最大值等),并且您想要区分的两列必须出现在group by 子句。否则,就像德克尔所说的那样。

于 2008-10-10T20:38:56.797 回答
8

您可以通过使用以下 SQL 的两列获得不同的结果:

SELECT COUNT(*) FROM (SELECT DISTINCT c1, c2 FROM [TableEntity]) TE
于 2013-07-16T03:42:08.643 回答
5

如果您仍然只想按一列分组(如我所愿),您可以嵌套查询:

select c1, count(*) from (select distinct c1, c2 from t) group by c1
于 2013-03-12T19:56:36.610 回答
3

分享我的愚蠢想法:

也许我只能在 c1 而不是 c2 上选择 distinct,所以语法可能是select ([distinct] col)+where distinctis a qualifier for each column。

但想了想,我发现只有一栏的 distinct 是胡说八道。取以下关系:

   | A | B
__________
  1| 1 | 2
  2| 1 | 1

如果是我们select (distinct A), B,那什么是合适BA = 1呢?

因此,distinct是 a 的限定词statement

于 2019-03-21T12:50:38.127 回答