SQL відмінний для 2 полів у базі даних


84

Чи можете ви отримати чітку комбінацію 2 різних полів у таблиці бази даних? якщо так, можете навести приклад SQL.

Відповіді:


128

Як щодо просто:

select distinct c1, c2 from t

або

select c1, c2, count(*)
from t
group by c1, c2

Залежно від даних, групування відбувається повільніше, ніж різне
noizer

5
Для тих, хто бачить Operand should contain 1 column(s)помилку, ваша проблема полягає в тому, що ви, мабуть, робите, select distinct(c1, c2) from tі вам не дозволено дужки тут. Так я сюди потрапив.
BookOfGreg 02.03.17

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є кваліфікатором для a statement.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.