SQL CE: ограничение строк, возвращаемых в запросе - PullRequest
2 голосов
/ 17 декабря 2009

В SQL Compact Edition 3.5 , обратите внимание, что это Compact Edition Я говорю о том, есть ли способ ограничить количество строк только 2? Что-то вроде использования LIMIT или TOP. Я действительно не хочу, чтобы использовал что-либо с SqlCEDataReader или SqlCEResultSet. Я хочу сделать все ограничения в запросе . Возможно ли это сейчас? Я посмотрел вокруг, и это не так.

РЕДАКТИРОВАТЬ-

В ответ на запрос Дэйва Сверски о данных и использовании Min () / Max () для некоторых столбцов в качестве средства для получения двух верхних строк, вот некоторые примерные (стерилизованные) данные:

Line     Site          Function     Status
1010     Las Vegas     new          4
1020     DC            send         1
1030     Portland      copy         1
1040     SF            copy         1
1050     Portland      copy         1
1060     DC            send         1

* Есть больше столбцов, чем это, но это важные.

Извините за отсутствие интуитивно понятных данных (но фактические данные еще менее интуитивно понятны!), Но для безопасности мне нужно изменить данные.

Итак, мне нужно определить: на каком сайте была запись в предыдущей строке, чтобы определить, где ее нужно взять.

сайт в любой заданной строке (, за исключением первой строки с function = 'new' ) соответствует тому, куда идет следующий элемент . Так что просто захват этого сайта из той же строки не скажет мне, откуда он взялся. Статус всегда будет 1 или 4. 4 соответствует месту, где оно уже было доставлено, и поэтому я не хочу включать эти записи в результат. Но это может быть полезно для получения сайта раскладки.

Для этой таблицы данных я хочу, чтобы запрос возвращал сайт, соответствующий строке чуть выше первой строки со статусом 1. Так что для этого это будет Лас-Вегас.

Ответы [ 4 ]

5 голосов
/ 18 декабря 2009

Sql CE 3.5 поддерживает выражение TOP: http://technet.microsoft.com/en-us/library/bb686896.aspx

1 голос
/ 17 декабря 2009

В зависимости от того, что вам нужно сделать, вы можете выполнить полный запрос с помощью DataReader и только дважды вызвать его .Read() метод.

1 голос
/ 17 декабря 2009

Я не нашел ответа в самом запросе. Это для мобильного приложения или это SQL CE на рабочем столе?

У меня нет прямого ответа для вас, но я поделюсь тем, что я наблюдал в моих собственных проектах ... Мой опыт использования SQL CE в настольных приложениях заключается в том, что в некоторых ситуациях более эффективно использовать код приложения для фильтрации. Таким образом, если вы пишете запутанный запрос, вы также можете посмотреть на написание фильтров в коде вашего приложения внутри цикла data reader.Read () и сравнить результаты. Я обнаружил случаи, когда операции вырезания занимали от пары секунд до секунды.

Я знаю, что это не то, что вы хотите сделать, но я обнаружил, что SQL CE требует, чтобы вы оптимизировали вещи немного иначе, чем при работе на сервере. Не нужно беспокоиться о задержке в сети, поэтому обычные проблемы не проявляются.

1 голос
/ 17 декабря 2009

Это будет зависеть от ваших данных ... если у вас есть гарантированные последовательные идентификаторы или даты, вы можете использовать MAX с подзапросами NOT IN, чтобы вернуть ограниченное количество строк. Опубликуйте некоторые из ваших схем, и я постараюсь подготовить пример.

...