Я хочу обновить первые 100 записей в SQL Server. У меня есть таблица T1
с полями F1
и F2
. T1
имеет 200 записей. Я хочу обновить F1
поле в топ-100 записей. Как я могу обновить на основе TOP 100
в SQL Server?
sql
sql-server
tsql
sql-update
Раджеш
источник
источник
order by
а?Без
ORDER BY
самой идеиTOP
не имеет особого смысла. Вы должны иметь последовательное определение того, какое направление «вверх», а какое «вниз», чтобы концепция вершины имела смысл.Тем не менее SQL Server допускает это, но не гарантирует детерминированный результат .
UPDATE TOP
Синтаксис в общепринятом ответе не поддерживаетORDER BY
положение , но можно получить детерминированную семантику здесь с помощью КТРА или производной таблицы , чтобы определить нужный порядок сортировки , как показано ниже.источник
TOP
шансы, вы должны использовать это сORDER BY
тем, что вас интересует, это как "большинство" или "минимум" чего-то. Однако в других случаях вас может заинтересовать только одна подходящая запись. Как я сегодня! Мне нужно было исправить проблемы с данными (циклы) по одному. Весь процесс исправления включал сценарий БД, некоторое вмешательство пользователя и некоторые операции приложения. Нам было все равно, какая запись была обработана первой. Мы просто заботились о том, чтобы обрабатывать их по одному.WHERE
пункт, чтобы исключить ранее обработанные записи. Вопрос в виде написанного и принятого ответа довольно бессмысленный. Кстати: для использования таблиц в качестве очереди это довольно полезная ссылкаwhere
предложение, чтобы избежать повторной обработки одних и тех же строк.для тех, кто, как я до сих пор застрял с SQL Server 2000,
SET ROWCOUNT {number};
может быть использован доUPDATE
запросаограничит обновление до 100 строк
Он устарел, по крайней мере, с SQL 2005, но с SQL 2017 он все еще работает. https://docs.microsoft.com/en-us/sql/t-sql/statements/set-rowcount-transact-sql?view=sql-server-2017
источник
источник
Что еще круче, так это тот факт, что вы можете использовать встроенную табличную функцию, чтобы выбрать, какую (и сколько через
TOP
) строку (и) обновлять. Это:Для табличной функции у вас есть что-то интересное, чтобы выбрать строку для обновления, например:
... и в этом (по моему скромному мнению) истинная сила обновления только верхних выбранных строк детерминистически, в то же время упрощая синтаксис
UPDATE
оператора.источник
Пытаться:
источник
Вы также можете обновить из выбора, используя псевдоним и присоединиться:
источник