SQL отличается для 2 полей в базе данных - PullRequest
76 голосов
/ 11 октября 2008

Можете ли вы получить четкую комбинацию из 2 разных полей в таблице базы данных? если да, можете ли вы привести пример SQL.

Ответы [ 5 ]

116 голосов
/ 11 октября 2008

Как насчет просто:

select distinct c1, c2 from t

или

select c1, c2, count(*)
from t
group by c1, c2
15 голосов
/ 11 октября 2008

Если вы хотите, чтобы отличительные значения были только из двух полей плюс возвращались другие поля с ними, тогда другие поля должны иметь некоторую агрегацию (сумма, мин, макс и т. Д.), А также два столбца, которые вы хотите различить должен появиться в группе по предложению. Иначе, как говорит Декер.

6 голосов
/ 16 июля 2013

Вы можете получить результат, отличный от двух столбцов ниже SQL:

SELECT COUNT(*) FROM (SELECT DISTINCT c1, c2 FROM [TableEntity]) TE
3 голосов
/ 12 марта 2013

Если вы все еще хотите сгруппировать только по одному столбцу (как я хотел), вы можете вложить запрос:

select c1, count(*) from (select distinct c1, c2 from t) group by c1
0 голосов
/ 21 марта 2019

Поделитесь моей глупой мыслью:

Может быть, я могу выбрать разные только на c1, но не на c2, поэтому синтаксис может быть select ([distinct] col)+, где distinct - квалификатор для каждого столбца

Но, подумав, я обнаружил, что , различимый только в одном столбце, - это нонсенс . Возьмите следующие отношения:

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

Если мы select (distinct A), B, то что является правильным B для A = 1?

Таким образом, distinct является классификатором для statement.

...