MySQL удаляет дублированные данные строки при ВЫБОРЕ

#mysql #select #duplicate-data

#mysql #выберите #duplicate-данные

Вопрос:

У меня есть таблица, в которой я хочу отфильтровать дублирующиеся данные при использовании операции ВЫБОРА, сама таблица содержит такие данные:

 |=======|
| SPEED |
|=======|
|  100  |
|  100  |
|   90  |
|   80  |
|   80  |
|  100  |
|   80  |
|=======|
  

То, что я хочу, это что-то вроде этого, обратите внимание, что порядок все еще не изменен:

 |=======|
| SPEED |
|=======|
|  100  |
|   90  |
|   80  |
|  100  |
|   80  |
|=======|
  

DISTINCT или GROUP BY не сработали, поскольку они удаляют все дублированные данные

Зачем мне нужны такого рода данные, потому что я хочу нарисовать диаграмму, используя эти данные, за счет уменьшения узла (удаления дублированных данных в некоторых последовательностях) диаграмма была бы менее перегружена и быстрее отображалась

Комментарии:

1. У вас есть какие-либо другие поля?

2. Будет полезно, если вы дадите полную структуру таблицы, на основе одного столбца вам будет сложно ответить.

3. Таблицы в базах данных не наследуют концепцию порядка. Они, по определению, представляют собой неупорядоченный набор строк. Вы должны предоставить некоторую другую часть (ы) информации: A: однозначно идентифицирует каждый экземпляр и B: обеспечивает порядок значений.

Ответ №1:

Отредактировано, поскольку вопрос был прояснен.

Для того, чтобы архивировать что-то подобное, в вашей таблице должен быть другой столбец, давайте назовем его Id . Моя тестовая таблица выглядит следующим образом:

 CREATE TABLE `yourtable` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `Speed` int(11) DEFAULT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=MyISAM
  

Для того, чтобы проверить, может ли следующая строка иметь то же значение для скорости поля, вы можете просто использовать LEFT JOIN и исключить все данные, где оба значения равны.

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

 SELECT A.Id, A.Speed, B.* 
FROM yourtable AS A
LEFT JOIN yourtable AS B ON A.Id 1 = B.Id
WHERE A.Speed != B.Speed OR ISNULL(B.Speed);
  

Комментарии:

1. да, мои данные были правильными, и результат, который я хочу, тоже был правильным … я использовал это для рисования диаграммы, уменьшение узла было хорошим, отбросив дублированные данные

2. Возможно, термин «дублировать» немного перегружен с точки зрения данных в базе данных. После разъяснения я изменил свой первоначальный ответ. Попробуйте!