Выберите отличительное значение SQL - PullRequest
3 голосов
/ 02 ноября 2011

У меня есть такая таблица

-------------------------------------------------------------------
id | title | image  | name |
-------------------------------------------------------------------
1  | xyzab | so.jpg | googl |
2  | acbde | am.jpg | artic |
3  | xyzab | pp.jpg | other |

Я хочу выбрать уникальный или отдельный заголовок с его изображением и именем.Не хочу повторять значения.Я использую этот код

SELECT DISTINCT title,image,name,id FROM `some_table`

, но это не работает нормально

ПРИМЕЧАНИЕ : OP работает с MySQL

Ответы [ 3 ]

5 голосов
/ 02 ноября 2011

Использование DISTINCT обеспечит соответствие 2 записей для всех столбцов, поэтому работает правильно.

Если вы хотите вернуть уникальные заголовки, вам нужно решить, какое изображение и имя будут возвращены.

Для этого вы можете использовать группу с агрегатной функцией. Например:

SELECT title, MIN(image), MIN(name), MIN(id)
FROM `some_table`
GROUP BY title

Но это зависит от того, к каким результатам вы стремитесь ...

0 голосов
/ 02 ноября 2011

DISTINCT применяется не к одному полю после ключевого слова, а к полям в вашем операторе выбора. То, что вы ищете, это GROUP BY:

SELECT title,image,name,id FROM some_table GROUP BY title

0 голосов
/ 02 ноября 2011

Вам нужно будет указать ПОБЕДИТЕЛЯ ... другими словами, если есть дублирующий заголовок, но для других данных в других столбцах нужно выбрать один ...

Например, вы можете попробовать это.

select * from 'some_table' where id in (select min(id) from 'some_table' group by title)
...