|
update top (n) .... ORDER BY ... - хочу кнопку "beautify"
|
|||
---|---|---|---|
#18+
Доброго дня! Конструкция update top (n) .... ORDER BY ... в MS SQL не работает не поддерживается. На MS-сайте написан обходной вариант. Как думаете, когда-нибудь сделают? Поделитесь, если решали подобное, опытом,- а то может я изобретаю велосипед? Может можно через MERGE, а я не "чухаю" всей мощи сей чудесной команды? Правда, у меня есть "засада" - UPDATE с простым WHERE не возможен,- ибо может быть несколько строк (полностью идентичных в КЛЮЧЕВЫХ полях!), которые выбираются по where-предикату. Что бы изменить только одну из них и сбросить в таблицу по OUTPUT, я и ставлю TOP (1). А хотелось бы их ещё и сортировать (ну, что бы выбирать по определённому параметру...). Сейчас приходится выбирать ещё и граничное условие и пихать его во where (скажем, появляется CTE, через которое это условие и формируется). Вроде всё работает, но нет "стройности и красивости". В общем, хочу кнопку "beautify" ;) -------------------------- No ROM Basic... PS Вот понравилась идея воспользоваться update top (1) ... output ... order by ... ,- но не прокатило ... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2020, 21:05 |
|
update top (n) .... ORDER BY ... - хочу кнопку "beautify"
|
|||
---|---|---|---|
#18+
SIMPLicity_, обычно Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.03.2020, 21:11 |
|
update top (n) .... ORDER BY ... - хочу кнопку "beautify"
|
|||
---|---|---|---|
#18+
SIMPLicity_, Ответ прост как 3 копейки. Список Id для обновления во временную таблицу и потом её использовать в merge, чтобы срезать число обновляемых записей (выбрать только первые n во временную таблицу). Но мне непонятно другое -- а зачем обновлять конкретно первые n записей в порядке сортировки? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 08:01 |
|
update top (n) .... ORDER BY ... - хочу кнопку "beautify"
|
|||
---|---|---|---|
#18+
a_voronin Но мне непонятно другое -- а зачем обновлять конкретно первые n записей в порядке сортировки? "взять" в обработку первую запись из очереди. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 08:09 |
|
update top (n) .... ORDER BY ... - хочу кнопку "beautify"
|
|||
---|---|---|---|
#18+
SIMPLicity_, Я вот другого не пойму -- у меня update top n работает. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
(10 rows affected) Microsoft SQL Server 2019 (RTM-GDR) (KB4517790) - 15.0.2070.41 (X64) Oct 28 2019 19:56:59 Copyright (C) 2019 Microsoft Corporation Developer Edition (64-bit) on Windows Server 2016 Standard 10.0 <X64> (Build 14393: ) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 08:23 |
|
update top (n) .... ORDER BY ... - хочу кнопку "beautify"
|
|||
---|---|---|---|
#18+
a_voronin SIMPLicity_, Я вот другого не пойму -- у меня update top n работает. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
(10 rows affected) Microsoft SQL Server 2019 (RTM-GDR) (KB4517790) - 15.0.2070.41 (X64) Oct 28 2019 19:56:59 Copyright (C) 2019 Microsoft Corporation Developer Edition (64-bit) on Windows Server 2016 Standard 10.0 <X64> (Build 14393: ) Ключевое слово - top (n) ... ORDER BY ... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 08:26 |
|
update top (n) .... ORDER BY ... - хочу кнопку "beautify"
|
|||
---|---|---|---|
#18+
Shakill SIMPLicity_, обычно Код: sql 1.
Спасибо! Не въехал как оно работает, но похоже что "это то что надо"... PS Если подумать, то CTE это всего лишь навсего view , но у меня в башке это не укладывается. ... Ибо до сих пор к CTE я отношусь как к способу получения выборки из адской таблицы (усечение по WHERE-предикату в описании CTE) ,- что бы потом этот кусок многократно "повертеть на х@ю" и так и сяк в основном запросе ) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 08:35 |
|
update top (n) .... ORDER BY ... - хочу кнопку "beautify"
|
|||
---|---|---|---|
#18+
SIMPLicity_, так тоже работает Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 08:43 |
|
update top (n) .... ORDER BY ... - хочу кнопку "beautify"
|
|||
---|---|---|---|
#18+
SIMPLicity_ Ключевое слово - top (n) ... ORDER BY ... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 08:44 |
|
update top (n) .... ORDER BY ... - хочу кнопку "beautify"
|
|||
---|---|---|---|
#18+
SIMPLicity_, TOP не имеет отношения к проблеме, синтаксис UPDATE не предусматривает сортировку. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 13:21 |
|
update top (n) .... ORDER BY ... - хочу кнопку "beautify"
|
|||
---|---|---|---|
#18+
SIMPLicity_ Shakill SIMPLicity_, обычно Код: sql 1.
Спасибо! Не въехал как оно работает, но похоже что "это то что надо"... PS Если подумать, то CTE это всего лишь навсего view , но у меня в башке это не укладывается. ... Ибо до сих пор к CTE я отношусь как к способу получения выборки из адской таблицы (усечение по WHERE-предикату в описании CTE) ,- что бы потом этот кусок многократно "повертеть на х@ю" и так и сяк в основном запросе ) Это ничем не отличатся от обычного подзапроса Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 13:37 |
|
update top (n) .... ORDER BY ... - хочу кнопку "beautify"
|
|||
---|---|---|---|
#18+
SIMPLicity_ ... Ибо до сих пор к CTE я отношусь как к способу получения выборки из адской таблицы ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 14:01 |
|
update top (n) .... ORDER BY ... - хочу кнопку "beautify"
|
|||
---|---|---|---|
#18+
SIMPLicity_ PS Если подумать, то CTE это всего лишь навсего view , но у меня в башке это не укладывается. наоборот, вью и cte это всего лишь навсего подзапросы :) а если продолжать аналогию, то вьюхи же можно апдейтить при определенных условиях , почему cte нельзя ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 16:10 |
|
update top (n) .... ORDER BY ... - хочу кнопку "beautify"
|
|||
---|---|---|---|
#18+
Shakill SIMPLicity_, обычно Код: sql 1.
Спасибо ещё раз! with cte as (select top ... ) update cte set .... output ... Попробовал,- восхитительно! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2020, 02:28 |
|
|
start [/forum/topic.php?fid=46&msg=39937091&tid=1686309]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 141ms |
0 / 0 |