Tarun Mittal Delhi Ответов: 1

Как обновить несколько столбцов в SQL, если все столбцы имеют один и тот же тип данных и одни и те же данные?


Уважаемые эксперты,

У меня есть таблица, которая имеет 45 столбцов, включая первичный ключ. Кроме того, 44 столбца имеют один и тот же тип данных и также имеют одни и те же данные(например, тип данных: int, данные: 50 во всех 44 столбцах). Причем, в этой таблице нет записей более 3000. Итак, я хочу обновить все записи.
Как я могу обновить записи с помощью короткого запроса?

Что я уже пробовал:

Update table_name set col_name1=50, col_name2=50, col_name3=50, col_name4=50, col_name5=50, ...upto col_name44=50 where ISBN='97890000000'

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

Maciej Los

Хотите добавить одно и то же значение для каждого столбца?

Tarun Mittal Delhi

да...

Karthik_Mahalingam

в чем проблема?

Tarun Mittal Delhi

Привет,

У меня есть таблица, которая связана с ценами на книги. Подробности: в этой таблице 44 столбца определены для 44 «стран Латинской Америки», а основной столбец - «ISBN». «ISBN» уникален для каждой записи / книги. Теперь я хочу обновить цены для всех 44 стран. В этом случае мне нужно будет написать такой запрос: (Обновить CountryPrice Set MX = 84, GT = 84, SV = 84, HN = 84, NI = 84, CR = 84, PA = 84, CO = 84, VE = 84, PY = 84, BO = 84, EC = 84, BR = 84, CL = 84, AR = 84, UY = 84, PE = 84, DO = 84, PR = 84, TT = 84, JM = 84, GY = 84, CU = 84, HT = 84, GP = 84, MQ = 84, BS = 84, BB = 84, LC = 84, CW = 84, AW = 84, VC = 84, GD = 84, AG = 84, DM = 84, KY = 84, KN = 84, SX = 84, TC = 84, MF = 84, VG = 84, AI = 84, BL = 84, MS = 84, где ISBN = '9789350903186')

Примечание: эти столбцы в основном являются кодами стран.

Я хочу обновить более 3000 записей, как в приведенном выше примере. Пожалуйста, помогите мне, как я могу написать запрос для всех записей вкратце. Если я буду писать вручную, то время тоже будет потрачено.

---
с уважением,
Тарун Миттал

Maciej Los

Проверьте обновленные ответ ;)

Tarun Mittal Delhi

спасибо за ваше решение. Но значение всех 44 столбцов также будет разным для каждого ISBN. Итак, существует ли какой-либо метод написания короткого запроса для обновления всех записей с помощью определения одного столбца для всех 44 столбцов...???? надеюсь, вы поймете, что я хочу сделать

Maciej Los

Думать об этом. Решение было предоставлено. Все, что вам нужно, - это изменить запрос в соответствии с вашими потребностями.

Richard Deeming

Очень плохой дизайн!

Вам нужно три стола:

* Книги: (ISBN, [другие сведения о книге...])
* Страны (код страны, [другие сведения о стране...])
* Книжные цены (ISBN, код страны, цена)

Тогда обновление будет:

UPDATE BookPrices
SET Price = @NewPrice
WHERE ISBN = @ISBN;

Tarun Mittal Delhi

я уже слежу за этой структурой.

Richard Deeming

Не в соответствии с вашим вопросом и вашими комментариями! :)

Richard Deeming

44 столбца в одной таблице, все они содержат одни и те же данные?

Похоже, кто-то должен научиться нормализовать базу данных.

https://en.wikipedia.org/wiki/Database_normalization[^]
http://www.essentialsql.com/get-ready-to-learn-sql-database-normalization-explained-in-simple-english/[^]

1 Ответов

Рейтинг:
7

Maciej Los

Если вы хотите обновить все записи, просто удалите их WHERE заявление ;)

[РЕДАКТИРОВАТЬ]

Привет,

У меня есть таблица, которая связана с ценой книг. Подробности: в этой таблице 44 столбца определены для 44 "латиноамериканских стран", а основной столбец - "ISBN". "ISBN" уникален для каждой записи/книги. Теперь я хочу обновить цену для всех 44 стран. В этом случае мне придется написать запрос следующим образом:

Update CountryPrice Set MX=84, GT=84, SV=84, HN=84, NI=84, CR=84, PA=84, CO=84, VE=84, PY=84, BO=84, EC=84, BR=84, CL=84, AR=84, UY=84, PE=84, DO=84, PR=84, TT=84, JM=84, GY=84, CU=84, HT=84, GP=84, MQ=84, BS=84, BB=84, LC=84, CW=84, AW=84, VC=84, GD=84, AG=84, DM=84, KY=84, KN=84, SX=84, TC=84, MF=84, VG=84, AI=84, BL=84, MS=84 Where ISBN='9789350903186'


Примечание: эти столбцы в основном являются кодами стран.

Я хочу обновить более 3000 записей, как в приведенном выше примере. Пожалуйста, помогите мне, как я могу написать запрос для всех записей вкратце. Если я буду писать вручную, то время тоже будет потрачено.


Если вы хотите обновить 3000 записей для набора ISBN и если вы хотите получить коды ISBN из другой таблицы на основе некоторого условия, вы можете использовать SELECT + UPDATE:

UPDATE t1 Set MX=t2.Field1, GT=t2.Field1, SV=t2.Field1, ...
FROM CountryPrice AS t1 INNER JOIN OtherTable AS t2 ON t1.ISBN = t2.ISBN
WHERE t2.SomeField = 'SomeValue'


Wendelius

Это должно тебя достать ... nowhere :) a 5

Maciej Los

:смеяться:
Спасибо, Мика.