Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Kontox Member Откуда: Сообщений: 146 |
Подскажите, есть таблица dbo.mytab там есть поле (mark) как сделать, чтобы если для строки mark=0, то обнулить всю строку(т.е. все колонки должны равняться нулю) |
12 мар 19, 14:37 [21830294] Ответить | Цитировать Сообщить модератору |
Konst_One Member Откуда: Сообщений: 11568 |
update сделайте |
12 мар 19, 14:38 [21830297] Ответить | Цитировать Сообщить модератору |
Kontox Member Откуда: Сообщений: 146 |
я тоже об этом думал, но колонок много, по одной я не хочу, я хочу для всех сразу update mytab set * from mytab =0 where mark=0 ошибка Сообщение 102, уровень 15, состояние 1, строка 977 Неправильный синтаксис около конструкции "*". |
12 мар 19, 16:35 [21830496] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
Kontox,
это вам лень названия колонок писать или что? |
||
12 мар 19, 16:37 [21830498] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37155 |
|
||
12 мар 19, 16:38 [21830500] Ответить | Цитировать Сообщить модератору |
Kontox Member Откуда: Сообщений: 146 |
TaPaK если колонок 5, то не лень, а если их сотни, вот тут есть трудности и лень тут не причем :) |
12 мар 19, 17:32 [21830570] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
между 5ю и 150 нет разницы в написании ALT+1 на названии объекта, скопировать все колонки, вставить куда надо, ALT+SHIFT + ARROW протянуть все после название и вписать "= 0," |
||
12 мар 19, 17:36 [21830577] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
+ SCRIPT TABLE AS - UPDATE ... для мышкоюзеров |
12 мар 19, 17:37 [21830582] Ответить | Цитировать Сообщить модератору |
Kontox Member Откуда: Сообщений: 146 |
То что Вы сказали, в принципе сам знаю. Хотелось что -то по креативнее. Но ладно) Пусть так будет |
12 мар 19, 17:58 [21830603] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37155 |
|
||
12 мар 19, 18:02 [21830612] Ответить | Цитировать Сообщить модератору |
PizzaPizza Member Откуда: Сообщений: 419 |
Мммм... Сотни колонок. Почему у меня никогда не получается таких задач, где бы мне понадобились сотни колонок? Чяднт? |
||
13 мар 19, 08:35 [21830939] Ответить | Цитировать Сообщить модератору |
Akina Member Откуда: Зеленоград, Москва, Россия Сообщений: 20974 |
|
|||
13 мар 19, 09:24 [21830976] Ответить | Цитировать Сообщить модератору |
4d_monster Member Откуда: Москва Сообщений: 1613 |
Так ? DECLARE @nameTable as nvarchar(512) DECLARE @partSet as nvarchar(128) DECLARE @partSetAndSep as nvarchar(128) DECLARE @sqlDynamic as nvarchar(max) DECLARE @partWhere as nvarchar(512) SET @nameTable = 'mytab' SET @partWhere = 'mark=0' SET @partSet = '=0 ' SET @partSetAndSep = @partSet + ', ' SELECT @sqlDynamic = 'UPDATE ' + QUOTENAME(@nameTable) + ' SET ' + STRING_AGG(QUOTENAME(cols.name), @partSetAndSep) + @partSet + ' WHERE ' + @partWhere +';' FROM sys.all_columns as cols INNER JOIN sys.all_objects as objs ON cols.object_id = objs.object_id WHERE objs.type ='U' AND objs.name = @nameTable PRINT @sqlDynamic |
||
13 мар 19, 09:52 [21830993] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
на центре звезды ~221 колонка, без понятния что вы делаете |
||||
13 мар 19, 09:54 [21830995] Ответить | Цитировать Сообщить модератору |
PizzaPizza Member Откуда: Сообщений: 419 |
Ну ключи то понятно. Опять же не у каждого есть сущность на сотни аттрибутов. Чаще всего такие широкие таблицы просто ошибка проектирования имхо. |
||||
13 мар 19, 18:25 [21831664] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
где ж вы были когда мы это проектировали, и это продаём.... |
||||
13 мар 19, 18:26 [21831665] Ответить | Цитировать Сообщить модератору |
PizzaPizza Member Откуда: Сообщений: 419 |
экий вы нервный, все на свой счёт принимаете Попробуйте применять понятие "здравый смысл" в жизни. Например, какова вероятность, что человек продает программный продукт с промежуточной таблицей на 100+ полей и не знает синтаксис SQL? |
||||
13 мар 19, 19:37 [21831744] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |