#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. Возможно, термин «дублировать» немного перегружен с точки зрения данных в базе данных. После разъяснения я изменил свой первоначальный ответ. Попробуйте!