Он будет отображать только все строки, если каждая строка была уникальной в базе данных. Ключевое слово DISTINCT
говорит «исключить точные дубликаты» в выходном наборе. Во втором запросе вы выбираете City
, а затем через *
все столбцы в таблице. Скажем, у вас были столбцы City, State, Zip
, затем City, *
- это то же самое, что и City, City, State, Zip
. Теперь он будет возвращать уникальные комбинации из них для всех строк в базе данных. Так что если у вас
Name, City, State, Zip
Joe, Chicago, IL, 60290
Steve, Chicago, IL, 60290
Joe, Chicago, IL, 60290
Joe, Los Angeles, CA, 90012
И выбранный City, *
вы получите
Joe, Chicago, IL, 60290
Steve, Chicago, IL, 60290
Joe, Los Angeles, CA, 90012
с повторяющейся строкой Joe, Chicago, IL, 60290
устранен.
Если вы получаете все строки, я подозреваю, что это связано с тем, что в таблице есть уникальный столбец (возможно, первичный ключ), который заставляет каждую строку быть уникальной.
Возможно, вам понадобится запрос GROUP BY
, но затем вам необходимо применить оператор агрегации к оставшимся столбцам, чтобы выбрать, какие значения для них вы хотите.
SELECT State, COUNT(*) as [Customers in State]
FROM Customers
GROUP BY State
Это вернет набор различных состояний с подсчетом количества строк, соответствующих этому состоянию в таблице.
потому что во втором вы выбираете все/все из этой таблицы со всем символом *? – CRABOLO
@Sompuperoo, поэтому вы хотите сказать, что приоритет * больше, чем у другого? – svkvvenky
@svkvvenky - Какое поведение вы ожидаете? Каждый город, который будет указан один раз, со случайным рядом? Или вы хотите первую запись для каждого города, используя, например, Select Top 1 * over (City), например: http://stackoverflow.com/questions/6841605/get-top-1-row-of-each -группа –