Выберите несколько записей на основе значения столбца одной записи - PullRequest
1 голос
/ 19 февраля 2010

У меня есть таблица, которая содержит связанные записи (несколько ревизий одной и той же записи). Каждая запись имеет строковое поле, напоминающее дату (дату, время и микротайм). Я хочу выбрать все записи, которые старше определенной даты. Если запись имеет связанную запись, более новую, чем указанная дата, я не хочу выбирать какую-либо из этих связанных записей. Есть идеи для этого выбора? В конце концов это будет оператор REMOVE.

Редактировать: некоторые примерные строки

id    shared_id    date                         type      other_data...
1     2            2010-01-01 01:02:03.1234567  original  ...
2     3            2010-01-15 11:12:03.1234733  original  ...
3     2            2010-02-01 03:04:04.5465654  amendment ...

Если бы моей конечной датой было «2010-01-31», я бы хотел выбрать идентификатор № 2 только потому, что идентификатор № 1 имеет поправку, более новую, чем дата отключения.

Ответы [ 3 ]

1 голос
/ 20 февраля 2010

Я нашел эту ссылку , которая помогла мне сгенерировать оператор выбора.

SELECT DISTINCT T.shared_id,T.date,T.id  
FROM table T  WHERE T.date = ( 
SELECT MAX( date ) FROM table WHERE shared_id = T.shared_id )  
AND T.date < 'my_cut_off_date_string'

Мне кажется, это работает.Спасибо всем за помощь.

0 голосов
/ 19 февраля 2010
DELETE from tablename where relatedField = 'relatedValue' AND dateField <= dateToDeleteFrom

Что-то в этом роде должно делать то, что вам нужно, если я понимаю ваш сценарий.Если вы предоставите примерный набор данных, я смогу скорректировать утверждение, чтобы оно более точно отражало ваши потребности, но я думаю, что это хорошая отправная точка.

HTH, Jc

0 голосов
/ 19 февраля 2010

Может быть, вы можете попробовать функцию DATEDIFF (), проверьте это: Ссылка 1

Или вот этот: Ссылка 2

Или, может быть, вы можете попробовать классический запрос (SELECT FROM table WHERE data <= anotherdata), но в этом случае вам необходимо преобразовать обе данные в формат отметки времени </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...