Выберите последние записи из таблицы
У меня есть динамическая таблица, состоящая из более чем 500 000 записей. Я хочу выбрать записи, которые были недавно добавлены.
epc toX toY observTime 000000000000000000000041 2.41 -6.22 2018-01-12 17:04:00.070 000000000000000000000041 3.45 -7.26 2018-01-12 17:14:30.090 000000000000000000000041 2.67 -6.48 2018-01-12 17:27:00.073 000000000000014028924001 0.73 -1.86 2018-01-12 17:31:30.083 000000000000014028924001 0.64 -1.89 2018-01-12 17:42:00.077 11110001 1.96 -4.73 2018-01-12 17:31:30.083 11110001 2.02 -4.68 2018-01-12 17:42:00.083 11110001 2.1 -4.62 2018-01-12 17:21:00.090
Мне нужен такой вывод
epc toX toY observTime 000000000000000000000041 2.67 -6.48 2018-01-12 17:27:00.073 000000000000014028924001 0.64 -1.89 2018-01-12 17:42:00.077 11110001 2.02 -4.68 2018-01-12 17:42:00.083
Короче говоря, я хочу выбрать запись, которая является недавней в соответствии с "observTime".
Я упомянул динамическую таблицу, которая означает, что данные периодически хранятся в таблице, и мне нужно выбрать запись, которая имеет недавнее время наблюдения
Что я уже пробовал:
SELECT epc, toX, toY, toFacility, toFloor, toZone, observTime FROM dbo.tbl_ItemHistoryInfo AS t1 WHERE ((SELECT COUNT(*) FROM dbo.tbl_ItemHistoryInfo AS t2 WHERE (epc = t1.epc) AND (observTime > t1.observTime)) = 0)
Я создал представление, используя этот запрос. Но я не получаю последних записей.
Не могли бы вы помочь мне, предоставив запрос, в котором я получу последние записи? Так же как и я должен учитывать временную сложность запроса. У меня более 500 000 записей. Так будет ли это хорошим решением для него?
David_Wimbley
Вы не добавили заказа на ваш запрос? Если столбец time в конце имеет значение observTime, то вы добавите ORDER BY observTime DESC
webmail123
@Давид. Спасибо за ответ. Я попробовал с этим
Выберите epc, toX, toY, toFacility, toFloor, toZone, observTime
Из dbo.tbl_ItemHistoryInfo как t1
Где ((выберите COUNT(*) как Expr1
Из dbo.tbl_ItemHistoryInfo как t2
Где (epc = t1.epc) и (observTime > t1.observTime)) = 0 )
заказ по observTime desc
но все равно не получаю ожидаемого результата.
ZurdoDev
Все, что вы сказали, это то, что вы хотите самые последние. Просто, заказывайте по вашей колонке дат. Сделано.
webmail123
Я также хочу избежать дубликатов. Вы можете еще раз взглянуть на то, как мне нужен был выход. Мне нужны epc, toX, toY и observTime.
ZurdoDev
Просто добавьте SELECT DISTINCT, чтобы избежать дубликатов. Я не знаю ваших данных, поэтому мне немного трудно вам помочь.
webmail123
@Давид.. Извините за путаницу. На самом деле, я упомянул свой вклад и свой ожидаемый результат в самом вопросе. Я еще раз упомяну об этом.
ЕРС токс игрушка observTime
000000000000000000000041 2.41 -6.22 2018-01-12 17:04:00.070
000000000000000000000041 3.45 -7.26 2018-01-12 17:14:30.090
000000000000000000000041 2.67 -6.48 2018-01-12 17:27:00.073
000000000000014028924001 0.73 -1.86 2018-01-12 17:31:30.083
000000000000014028924001 0.64 -1.89 2018-01-12 17:42:00.077
11110001 1.96 -4.73 2018-01-12 17:31:30.083
11110001 2.02 -4.68 2018-01-12 17:42:00.083
11110001 2.1 -4.62 2018-01-12 17:21:00.090
Данные, упомянутые выше, являются моими фактическими данными в таблице.
И то, что я на самом деле хочу, упоминается ниже:
ЕРС токс игрушка observTime
000000000000000000000041 2.67 -6.48 2018-01-12 17:27:00.073
000000000000014028924001 0.64 -1.89 2018-01-12 17:42:00.077
11110001 2.02 -4.68 2018-01-12 17:42:00.083
поэтому, если вы наблюдаете, я хочу выбрать значение epc, toX, toY и observTime. Но он должен быть последним на основе наблюдательного времени. В выходных данных, о которых я упоминал выше, значение epc, toX, toY выбирается с помощью недавнего времени наблюдения
webmail123
Извините за вывод таблицы. Имена столбцов: epc, toX, toY, observTime.
ZurdoDev
Хорошо, смотрите решение 2.