SQL отдельный для 2 полей в базе данных

84

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

Леора
источник

Ответы:

129

Как насчет того, чтобы просто:

select distinct c1, c2 from t

или же

select c1, c2, count(*)
from t
group by c1, c2
Говард Пинсли
источник
В зависимости от данных, group by работает медленнее, чем отличное
noizer 08
5
Для тех, кто видит Operand should contain 1 column(s)ошибку, ваша проблема в том, что вы, вероятно, делаете, select distinct(c1, c2) from tи вам не разрешены скобки здесь. Вот как я сюда попал.
BookOfGreg 02
16

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

Джеффри Л. Уитледж
источник
7

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

SELECT COUNT(*) FROM (SELECT DISTINCT c1, c2 FROM [TableEntity]) TE
Уилсон Ву
источник
5

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

select c1, count(*) from (select distinct c1, c2 from t) group by c1
Денно
источник
3

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

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

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

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

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

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

Youkaichao
источник