Выборка из таблицы

Рейтинг: 0Ответов: 2Опубликовано: 17.10.2014

Вопрос по мотивам моего предыдущего топика. Операции с той же таблицей.

CREATE TABLE IF NOT EXISTS `discrete_archive` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`dtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`f1` smallint(6) NOT NULL,
`f2` smallint(6) NOT NULL,
`f3` smallint(6) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

Необходимо выбрать из таблицы поля dtime и, например, f1, исключив из выборки идущие подряд строки с одинаковыми значениями f1.

Например. Имеем таблицу:

dtime      f1
10:00      1
10:01      2
10:02      4
10:03      4
10:04      2
10:05      7

Необходимо выбрать следующее:

10:00      1
10:01      2
10:02      4
10:04      2
10:05      7

Т.е. запись (10:03 4) не нужна, т.к. она повторяет предыдущую.

Если в таблице 1 запись, то необходимо вернуть ее.
Если в таблице 0 записей, то необходимо вернуть пустую выборку.

Это несколько упрощенная постановка задачи. Реально необходимо сравнивать значения f1, умножив на какую-либо маску (имеется в виду логическое умножение или конъюнкция). Например, берем маску 0x10. Тогда

(3 & 0x10) == (2 & 0x10)

Т.е. имеем таблицу

dtime      f1
10:00      1
10:01      2
10:02      4
10:03      4
10:04      2
10:05      7

Необходимо выбрать по маске 0x10 следующее:

10:00      (f1 & 0x10) = 0
10:01      (f1 & 0x10) = 2
10:02      (f1 & 0x10) = 0
10:04      (f1 & 0x10) = 2

Ответы

Ответов пока нет.