|
Помогите дописать запрос
|
|||
---|---|---|---|
#18+
Доброго времени суток! Знаю, что вопрос из азов SQL, но я только начинаю познавать тонкости mysql. Есть таблица table, в которой мне нужно изменить значение поля doc_type на 97. Но сделать это нужно только для тех строк, в которых значение поля doc_type=110. В качестве доп. условия для where я хочу использовать другое поле number. Соответственно имею такой запрос: SELECT number FROM table1 where doc_type='110'; UPDATE table1 SET doc_type = '97' where doc_type='110' and number= Вот как раз с концовкой я и не могу разобраться. Если я вручную впишу туда конкретное значение поля number, то запрос работает. А как мне сделать запрос таким образом, чтобы список всех значений поля number из select'а использовался в следующем за ним update'е ? Надеюсь понятно объяснил. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 14:38 |
|
Помогите дописать запрос
|
|||
---|---|---|---|
#18+
steelballs, а зачем? если вам нужно изменить все doc_type='110' - то это самодостаточное условие, зачем приплетать ещё что-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 14:46 |
|
Помогите дописать запрос
|
|||
---|---|---|---|
#18+
Зачем тебе "доп.условие? использовался в следующем за ним update'е - совершенно непонятно. SELECT тебе зачем? Ты же написал, что надо "изменить" по условию. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 14:46 |
|
Помогите дописать запрос
|
|||
---|---|---|---|
#18+
В таблице значения полей number и doc_type различные. Поэтому мне нужно делать выборку строк, где doc_type=110 и менять это значение на 97. Select я делаю для добавления доп. параметра в where. Потому как запрос с указанием конкретного значения поля number выполняется успешно. пробовал такой запрос: UPDATE table1 SET doc_type = '97' where doc_type='110'; на что выдается ошибка Cannot insert duplicate key in object 'table1. The duplicate key value is (0, 110, 97) А если написать UPDATE table1 SET doc_type = '97' where doc_type='110' and number='129'; - все отлично заменяется. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 15:01 |
|
Помогите дописать запрос
|
|||
---|---|---|---|
#18+
steelballs Код: sql 1.
; - все отлично заменяется. Тогда в чем вопрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 15:14 |
|
Помогите дописать запрос
|
|||
---|---|---|---|
#18+
Значений поля number порядка нескольких сотен. И хочется узнать как автоматизировать этот update по замене значения поля doc_type для всех строк со значениями поля number из результатов моего select'а. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 15:22 |
|
Помогите дописать запрос
|
|||
---|---|---|---|
#18+
для doc_type = '97' и where doc_type='110' есть несколько сот строк с разным number ? + Пойми значение термина "duplicate key" ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 15:24 |
|
Помогите дописать запрос
|
|||
---|---|---|---|
#18+
Нет, в таблице в поле doc_type сейчас отсутствует значение "97" . А с термином duplicate key value я разобрался, исключено наличие дублирующихся строк с такими значениями (по причине отсутствия там как такового значения "97"). ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 15:34 |
|
Помогите дописать запрос
|
|||
---|---|---|---|
#18+
steelballsНет, в таблице в поле doc_type сейчас отсутствует значение "97" . А с термином duplicate key value я разобрался, исключено наличие дублирующихся строк с такими значениями (по причине отсутствия там как такового значения "97"). 1. Как было ДО выполнения запроса. 2. Странная логика. 3. Так какой primary key на этой таблице? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 15:42 |
|
Помогите дописать запрос
|
|||
---|---|---|---|
#18+
До выполнения запроса поле doc_type принимало различные значения, в том числе и "110". Этим значениям соответствуют различные значения поля number. Например: number doc_type 1 110 1 120 1 130 12 110 12 120 12 130 129 110 129 120 129 130 Мне моим запросом нужно заменить "110" на "97". Для этого, в качестве вспомогательного параметра, я хочу использовать значения поля number. Ибо "в лоб" заменить "110" на "97" не получается. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.03.2019, 16:21 |
|
Помогите дописать запрос
|
|||
---|---|---|---|
#18+
Тебе надо думать, не какой величины костыль приделать к коду, а понять истинные причины почему "не получается". ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 01:51 |
|
Помогите дописать запрос
|
|||
---|---|---|---|
#18+
steelballsUPDATE table1 SET doc_type = '97' where doc_type='110' and number='129'; - все отлично заменяется. Скорее всего у тебя просто не было при number='129' в поле doc_type = '97' система и позволила тебе провести замену. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 02:36 |
|
Помогите дописать запрос
|
|||
---|---|---|---|
#18+
Да, спасибо, нашлось все таки несколько строк со значением поля doc_type=97. Почистил их, и глобальный update выполнился успешно. Странно, что он так трепетно относится к дублирующим строкам. Вопрос на будущее: а нельзя ли прогонять такой update с каким-нибудь режимом IGNORE, чтобы он не обращал внимание на те строки, где это поле уже имеет значение 97? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 09:02 |
|
Помогите дописать запрос
|
|||
---|---|---|---|
#18+
where doc_type <> '97' ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 09:15 |
|
Помогите дописать запрос
|
|||
---|---|---|---|
#18+
Это не "странно". Это прямое следствие "primary key " О чем система тебя и предупреждала через "duplicate key" ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 09:17 |
|
Помогите дописать запрос
|
|||
---|---|---|---|
#18+
steelballsа нельзя ли прогонять такой update с каким-нибудь режимом IGNORE, чтобы он не обращал внимание на те строки, где это поле уже имеет значение 97?А что нужно делать с записями, для которых уже есть запись с doc_type=97? удалить? оставить как есть? что-то ещё? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 09:18 |
|
Помогите дописать запрос
|
|||
---|---|---|---|
#18+
982183Это прямое следствие "primary key "Скорее не первичный, а какой-то составной уникальный. Типа (doc_id, doc_type)... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 09:19 |
|
Помогите дописать запрос
|
|||
---|---|---|---|
#18+
Спасибо, буду иметь в виду. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 09:26 |
|
Помогите дописать запрос
|
|||
---|---|---|---|
#18+
Akina982183Это прямое следствие "primary key "Скорее не первичный, а какой-то составной уникальный. Типа (doc_id, doc_type)... А разве PRIMARY KEY не может быть составным? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 09:38 |
|
Помогите дописать запрос
|
|||
---|---|---|---|
#18+
steelballsСпасибо, буду иметь в виду. Да не надо "иметь в виду. надо погуглить. https://andreyex.ru/bazy-dannyx/uchebnoe-posobie-po-sql/sql-primary-key-pervichnyj-klyuch/ http://dimonchik.com/sql-primary-key.html ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 09:42 |
|
Помогите дописать запрос
|
|||
---|---|---|---|
#18+
982183А разве PRIMARY KEY не может быть составным?Может. Но в сообщении об ошибке было бы написано, что именно с первичным ключом косяк, тогда как указано просто steelballsCannot insert duplicate key in object 'table1. The duplicate key value is (0, 110, 97) Так что там просто составной уникальный индекс из 3 полей. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.03.2019, 09:53 |
|
|
start [/forum/topic.php?fid=47&msg=39789361&tid=1829243]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 150ms |
0 / 0 |