Получение всех данных и удаление дубликатов таблицы - PullRequest
0 голосов
/ 11 октября 2011

Есть таблица с тремя полями: id, word, username

И в настоящее время в ней есть такие данные:

1 | run | thisguy
2 | run | thisguy
3 | go | thatgirl
4 | go | thatguy
5 | go | thatgirl

Мне нужны 1, 3 и 4.не хочу 2 и 5, потому что они дубликаты.Как бы я их достал?

Ответы [ 5 ]

2 голосов
/ 11 октября 2011
  1. Выполнение по той же таблице: создать уникальный индекс для обязательных полей /

  2. Выполнение в новой таблице:

a) Создать временную таблицу, выбрав уникальные данные из исходной таблицы.

b) Удалить исходную таблицу.

c) переименовать временную таблицу в имя исходной таблицы.

 CREATE TABLE tempr SELECT id, type,name FROM myTable GROUP BY type,name;
 DROP TABLE myTable;
 ALTER TABLE tempr RENAME TO myTable ;

Также создайте уникальный индекс по типу и имени для этой таблицы, чтобы избежать повторения в будущем.

0 голосов
/ 11 октября 2011

Вы пытались использовать предложение DISTINCT ?

0 голосов
/ 11 октября 2011

если вы хотите, чтобы в вашей таблице были только уникальные записи, делайте то, что сказал ДхрувПатхак в своем ответе Но если вы хотите получить записи с помощью запроса, вы можете использовать ключевое слово distinct. Ваш запрос будет выглядеть так

select id,distinct(word),username from $table
0 голосов
/ 11 октября 2011

Вы можете использовать встроенную функцию mysqls distinct или GROUP BY

Distinct

Mysql_query("SELECT DISTINCT id, word, username FROM persons");

Группировать по

Mysql_query("SELECT * FROM persons GROUP BY word");

Конечно, вы можете группировать поимя пользователя или все, что вы хотели бы тоже.

Jonas

0 голосов
/ 11 октября 2011
DELETE t2 FROM mytable AS t1
JOIN mytable AS t2 USING (word, username)
WHERE t1.id < t2.id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...