Каково различие между группой, отличный, Объединение для выбора отличных значений для нескольких столбцов?

Вы не можете изменить цвет рамки, это - определенная система.

Вместо этого Вы могли попытаться выключить установку границы и затем размещение DataGridView в Панели. Где DataGridView установлен Прикрепиться. Заливка и Панель имеют Дополнение 1 пикселя на всех краях. Затем выбирание цвета фона Панели покажет границей вокруг содержавшего DataGridView.

9
задан Community 23 May 2017 в 12:14
поделиться

4 ответа

Начнем с того, что я считаю самым простым, DISTINCT, на самом деле именно это. Он возвращает различные комбинации строк. Подумайте об этом наборе данных:

COL1      COL2      COL3
A         B         C
D         E         F
G         H         I
A         B         C   <- duplicate of row 1

Это вернет 3 строки, потому что 4-я строка в наборе данных точно соответствует первой строке. Результат:

COL1      COL2      COL3
A         B         C
D         E         F
G         H         I

GROUP BY часто используется для сводок и других вычислений. выберите COL1, SUM (COL2) из таблицы group by column1;

Для этого набора данных:

COL1      COL2
A         5
A         6
B         2
C         3
C         4
C         5

вернет

COL1     SUM(COL2)
A        11
B        2
C        12

UNION просто берет результаты из разных запросов и представляет их как 1 набор результатов:

Table1
COL1
A

Table2
COLX
B

Table3
WHATEVER_COLUMN_NAME
Giddyup

select COL1 from Table1
UNION
select COLX from Table2
UNION 
select WHATEVER_COLUMN_NAME from Table3;

Набор результатов:

A
B
Giddyup

При выполнении объединения типы данных столбца должны совпадать. Вы не можете ОБЪЕДИНЯТЬ числовой столбец со столбцом char (если вы явно не выполните преобразование данных)

10
ответ дан 4 December 2019 в 19:35
поделиться

Предположим, что это данные вашей базы данных:

column1 | column2 | column3
1       | 2       | 1
1       | 2       | 2
1       | 2       | 1
3       | 1       | 2
1       | 2       | 2
1       | 2       | 2
1       | 2       | 2

Первый запрос

В первом примере вы получите все комбинации столбцов из базы данных (как GROUP BY 1,2, 3 ничего не делает), включая дубликаты, поэтому он вернет:

1       | 2       | 1
1       | 2       | 2
1       | 2       | 1
3       | 1       | 2
1       | 2       | 2
1       | 2       | 2
1       | 2       | 2

2-й запрос

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

1       | 2       | 1
1       | 2       | 2
3       | 1       | 2

3-м запросом

Последний запрос принимает все значения из три столбца, а затем он удаляет дубликаты из этого набора. Таким образом, вы получите все значения из любой из таблиц. В конце концов это вернет

1
2
3

Это проясняет?

1
ответ дан 4 December 2019 в 19:35
поделиться

Если вы включите «Фактический план выполнения» (control + M в MS SQL Management Studio), он даст вам диаграмму того, как механизм SQL оптимизирует каждый из ваших заявления. Понимание этого поможет вам лучше писать запросы.

0
ответ дан 4 December 2019 в 19:35
поделиться

Давайте возьмем образец набора данных.

orderid    customer orderdate
1          B        July 29
2          A        Aug 1
3          A        Aug 4
4          C        Aug 5
5          B        Aug 6
6          A        Aug 11

Distinct в основном возвращает единственный экземпляр данной записи без дубликатов всего набора столбцов в наборе результатов. Пример: «выбрать отдельного клиента из заказов» вернет «A», «B», «C» по умолчанию в алфавитном порядке выбранных столбцов.

Группа по должна выполнять агрегирование в заданном наборе полей в запрос. Пример:

выберите клиента, подсчитайте (*) как NumberOfOrders из группы заказов на 1

Would result with...
A    3
B    2
C    1

Вы также можете применить отдельный (только один раз) в пределах запроса, но внутри данной группы ..

выберите клиента, подсчитайте (*) как NumberOfOrders, считать (отдельный {месяц даты заказа}) как CustomerMonths из группы заказов по клиенту

Would result with
A    3    1  (all orders were in August)
B    2    2  (had orders in July and August)
C    1    1  (only one order in August)

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

select customerid, orderdate, amount из CurrentOrders, где customerid = ?? порядок по 2 по убыванию СОЮЗ select customerid, orderdate, amount из ArchivedOrders, где customerid = ??

Предложение ORDER by первого выбора будет управлять результатами, все последующие записи будут добавлены в результаты. Это похоже на SQL-запрос: «Перейти к первой таблице, получить все необходимое, а затем выполнить сортировку». Затем перейдите к таблице 2, получите все, что соответствует требованиям, и вставьте в существующий отсортированный список из таблицы 1. Конечный результат - ВСЕ записи.

HTH

1
ответ дан 4 December 2019 в 19:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: