Как получить отдельную запись из таблицы mysql?

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

id | name | zip 
1  | abc  | 1234
2  | xyz  | 4321
3  | asd  | 1234

Я хочу получить все записи, но почтовый индекс не должен повторяться. Таким образом, в случае вышеуказанных записей таблицы должны быть извлечены записи № 1 и 2. Запись № 3 не будет получена, поскольку она имеет почтовый индекс, который уже есть в записи № 1.


person Student    schedule 24.05.2011    source источник
comment
Я хочу, чтобы все записи конфликтовали с записью номер 3, которая не должна быть извлечена. Вам нужны все записи или уникальный набор zip с первой записью, имеющей это значение?   -  person Albireo    schedule 24.05.2011


Ответы (6)


SELECT DISTINCT fieldName FROM tableName;

Следующий запрос выберет только отдельное поле «zip».

SELECT DISTINCT zip FROM student;

SELECT * FROM tableName GROUP BY fieldName;

Следующий запрос выберет все поля вместе с отдельным полем zip.

SELECT * FROM student GROUP BY zip;
person Mukesh Chapagain    schedule 24.05.2011
comment
В чем разница между SELECT DISTINCT zip FROM tableName; и SELECT DISTINCT FROM tableName; Результат может быть разным для этих двух??? - person Student; 24.05.2011
comment
Имя поля должно быть указано после DISTINCT. Раньше была опечатка. - person Mukesh Chapagain; 24.05.2011
comment
SELECT DISTINCT FROM tableName; выдаст синтаксическую ошибку SQL. SELECT DISTINCT fieldName FROM tableName; является правильным. - person Mukesh Chapagain; 24.05.2011
comment
Как этот запрос будет отображать записи, я не знаю. Еще выше показано, как он получает 5 голосов. - person ypercubeᵀᴹ; 24.05.2011

ПЫТАТЬСЯ

 SELECT DISTINCT(zip),id,name FROM student;

OR

  SELECT * FROM student GROUP BY zip;
person diEcho    schedule 24.05.2011
comment
ВЫБЕРИТЕ ОТЛИЧНЫЕ (zip), идентификатор, имя ОТ студента; не будет работать. Он покажет дубликат почтового индекса, если идентификатор или имя уникальны. - person Mukesh Chapagain; 24.05.2011
comment
Есть ли решение для SELECT DISTINCT(zip),id,name FROM student; ?? так что может появиться ID - person Haithem Rihane; 09.10.2013

Хотя в MySQL вам может сойти с рук:

SELECT *
FROM student
GROUP BY zip 

Я бы выбрал:

SELECT * 
FROM student t
  JOIN 
    ( SELECT MIN(id) AS minid
      FROM student
      GROUP BY zip
    ) AS grp
    ON grp.minid = t.id
person ypercubeᵀᴹ    schedule 24.05.2011

Поскольку, по-видимому, другие столбцы представляют некоторый интерес....

 SELECT y.*
 FROM yourTable y,
 (SELECT MIN(y2.id)
  FROM yourTable y2
  GROUP BY y2.zip) ilv
 WHERE ilv.id=y.id;

(или вы можете использовать max- concat трюк)

обновить

Теперь Oracle удалила трюк max concat со связанной страницы, но это описано в другом месте в Интернет

person symcbean    schedule 24.05.2011
comment
Вы пропустили запятую после yourTable y - person ypercubeᵀᴹ; 24.05.2011

Попробуйте использовать

Select Distinct(zip),id,name group by zip;
person Deepesh    schedule 05.03.2016

Есть ли какие-либо проблемы, если я использую как это ниже?

select distinct zip,name,id from student;
person sushil bharwani    schedule 24.05.2011