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.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.