Помогите построить SQL-запрос

168
03 июня 2019, 17:40
UPDATE tecdoc_cross, insert_parts_test 
SET tecdoc_cross.cross_num = IF(tecdoc_cross.cross_num = 0 , 
                                MAX(tecdoc_cross.cross_num) + 1 , 
                                tecdoc_cross.cross_num)
WHERE tecdoc_cross.art = insert_parts_test.art 
   OR tecdoc_cross.art = insert_parts_test.art_cross

Вообщем не работает только из-за MAX(tecdoc_cross.cross_num) + 1
Помогите пожалуйста найти решение.
tecdoc_cross имеет около 5 млн. строк
insert_parts_test имеет около 38 млн строк.

Answer 1

Попробуйте что-нибудь типа

UPDATE tecdoc_cross tc, 
       insert_parts_test ipt, 
       ( SELECT @tmp := MAX(cross_num) 
         FROM tecdoc_cross) var
SET tc.cross_num = (@tmp := @tmp + 1)
WHERE tc.cross_num = 0
  AND tc.art IN (ipt.art, ipt.art_cross)
READ ALSO
Очередная проблема с кодировкой MySQL

Очередная проблема с кодировкой MySQL

Очередная проблема с кодировкой, в таблице русские символы отображаются некорректно

166
Как выровнять div по правомю краю

Как выровнять div по правомю краю

Есть несколько инлайн блоков, которые размещаются по центру экрана, нужно выровнять третий по правому краю, не применяя свойство float (пример)

249
Мозаика на HTML, CSS

Мозаика на HTML, CSS

Запарился придумывать, пока что не придумал ни одного нормального способа мозаики , с активным элементомМожет быть знатоки подскажут как...

284
Динамический контент и его подгрузка

Динамический контент и его подгрузка

На странице администратора есть меню и блок adm_task,где отображается основной контент

159