Получение уникальных строк/значений в SQL

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

valueA  ValueB    ValueC

test    "Value1"  "Something"

test    "Value1"  "Something else"

test2   "Value1"  "Something else"

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

но скажем, что строка 4

test    "Value1"  "Something"

То же, что и ряд 1. Мне не нужен этот ряд.

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

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

select * from table1,table2

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

Но мне не нужны повторяющиеся значения.


person Maestro1024    schedule 12.10.2009    source источник


Ответы (6)


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
person Larry Lustig    schedule 12.10.2009
comment
Это, наверное, лучший ответ. Я думаю, что у меня были некоторые другие точки данных, которых у меня не было в моем вопросе. Но это отличный ответ, основанный на моем вопросе, как написано. - person Maestro1024; 12.10.2009

Выберите Отличительные * из таблицы1, таблицы2

person Matt Hamsmith    schedule 12.10.2009

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

  • Уникальный
  • Отчетливый
  • Группа по
person Roberto Aloi    schedule 12.10.2009

Используйте 1_ ?

As in:

SELECT DISTINCT value1, value2, value3 FROM table1, table2
person Gary McGill    schedule 12.10.2009
comment
Я посмотрел на отличные, например «Выбрать отличительное значение C из таблицы 2», но затем, если вы посмотрите на мой пример, в нем будет пропущена строка 3, где значение «C» такое же, а значение «A» — нет. - person Maestro1024; 12.10.2009
comment
Ах, но вам нужно поместить все столбцы, которые вы хотите сделать разными, в предложение SELECT, то есть не SELECT DISTINCT ValueC, а SELECT DISTINCT ValueA, ValueB, ValueC. - person Gary McGill; 12.10.2009

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

SELECT DISTINCT * FROM Table1, Table2
person Steve Wortham    schedule 12.10.2009

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

select a.valueA, b.valueB, b.valueC
from table1 a join table2 b on <join condition>
group by a.valueA, b.valueB, b.valueC;
person wallenborn    schedule 12.10.2009