2009-10-12 4 views
0

Получение уникальных строк/значений в SQL. У меня же некоторые данные как этотПолучение уникальных строк/значений в SQL

valueA ValueB ValueC 

test "Value1" "Something" 

test "Value1" "Something else" 

test2 "Value1" "Something else" 

Итак, я хочу, чтобы получить первые два ряда, так как valueC разные, и я также хочу грести 3.

но говорят Row 4

test "Value1" "Something" 

То же, что и строка 1. Я не хочу эту строку.

Могу ли я сделать это с помощью оператора select или где-то еще?

В моей схеме ValueA находится в одной таблице, а затем значения b и C взяты из другой таблицы. Так что я делаю что-то вроде

select * from table1,table2 

, которая дает мне 3 значения.

Но я не хочу повторных значений.

ответ

3
SELECT DISTINCT * FROM Table1, Table2 

будет делать то, что вы хотите.

Однако оператор SELECT не содержит критериев, указывающих системе , как, чтобы объединить строки. Таким образом, вы получите декартово произведение, содержащее ряд строк, равное количеству строк в таблице1, умноженное на количество строк в таблице2. Обычно это не, что вы хотите (иногда это так).

Таким образом, вы, вероятно, хотите что-то вроде:

SELECT DISTINCT * FROM Table1, Table2 WHERE Table1.SomeColumn = Table2.SomeColumn 

или, в более текущего диалекта SQL:

SELECT DISTINCT * FROM Table1 INNER JOIN Table2 ON Table1.SomeColumn = Table2.SomeColumn 
+0

Это, наверное, лучший ответ. Я думаю, у меня были некоторые другие данные, которые у меня не было в моем вопросе. Но это отличный ответ, основанный на моем вопросе, как написано. – Maestro1024

1

SELECT DISTINCT?

Как и в:

SELECT DISTINCT value1, value2, value3 FROM table1, table2 
+0

Я смотрел на отчетливые, как "Select Distinct ValueC из Table2" но то, если вы посмотрите на мой пример, который оставил бы строку 3, где ValueC будет такой же, но Value A - нет. – Maestro1024

+0

Ах, но вам нужно поместить все столбцы, которые вы хотите отличать в предложении SELECT, поэтому не SELECT DISTINCT ValueC, а SELECT DISTINCT ValueA, ValueB, ValueC. –

1

Выберите Distinct * из table1, table2

0

Как насчет этого?

SELECT DISTINCT * FROM Table1, Table2 
1

Вы можете взглянуть на ссылки SQL для:

  • Уникальный
  • Distinct
  • Group By
0

Попробуйте это:

select a.valueA, b.valueB, b.valueC 
from table1 a join table2 b on <join condition> 
group by a.valueA, b.valueB, b.valueC; 
Смежные вопросы