Обновление полей в заданном диапазоне строк - PullRequest
0 голосов
/ 02 мая 2019

Мне нужно обновить поля в таблице для определенного диапазона строк. Например, я хочу изменить CompanyID в строках 10-20.

Я придумал два способа сделать это, но ни один не совсем прав:

Раствор А)

    UPDATE Serials 
    SET Campaign_id = (Select Count(*) from Campaigns)
    WHERE Order_id = 400 AND Serial_num IN (
    Select  Serial_num FROM Serials
    Order By Serial_num LIMIT 10,10)

Это решение кажется наиболее простым, но проблема с этим решением заключается в том, что LIMIT int, int не поддерживается внутри подзапроса.

Раствор Б)

UPDATE Serials 
SET Campaign_id = (Select Count(*) from Campaigns)
WHERE Order_id = 400 AND Serial_num IN ((
SELECT * FROM Serials
JOIN(
    Select  Serial_num FROM Serials
    Order By Serial_num 
     LIMIT 10,10
    ) AS d
    on Serials.Serial_Num
d.Serial_num))

Я попробовал это решение после прочтения некоторых других постов, касающихся работы с LIMIT в проблеме подзапроса, однако мне не хватает чего-то в моем синтаксисе, потому что он говорит, что IN недопустим в своей позиции.

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

+-----------+---------+-----------+--+
| SerialNum | OrderID | CompanyID |  |
+-----------+---------+-----------+--+
| S111      |     400 | null      |  |
| S112      |     400 | null      |  |
| S113      |     400 | null      |  |
| S114      |     400 | null      |  |
| S115      |     400 | null      |  |
+-----------+---------+-----------+--+

Затем я хочу изменить CompanyID в строках с 3 по 5 (уменьшено для простоты; в приложении это будут сотни строк за раз, но все последовательно) следующим образом:

+-----------+---------+-----------+--+
| SerialNum | OrderID | CompanyID |  |
+-----------+---------+-----------+--+
| S111      |     400 | null      |  |
| S112      |     400 | null      |  |
| S113      |     400 | 111       |  |
| S114      |     400 | 111       |  |
| S115      |     400 | 111       |  |
+-----------+---------+-----------+--+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...