Следующий запрос (который примерно переводится как «если у клиента есть только одна радиостанция, то он находится в восходящем направлении от маршрутизатора»)
UPDATE Devices AS A
INNER JOIN Devices AS B ON A.CustomerID = B.CustomerID
SET A.Uplink=B.IPAddress
WHERE A.DeviceType='Router' AND B.DeviceType='Radio'
AND (
select count(temp.CustomerID) as total
FROM Devices AS temp
where temp.DeviceType = 'Radio' AND temp.CustomerID=A.CustomerID
) = 1;
выдает ошибку 1093, как только вы добавляете запрос COUNT. То же самое происходит, когда вы делаете обычное UPDATE (без INNER JOIN) и помещаете ссылку на радио в операторе SELECT в предложении SET после «SET A.Uplink =».
В настоящее время существует запрос функции, чтобы удалить это ограничение на https://bugs.mysql.com/bug.php?id=23353, и для некоторых случаев есть простые обходные пути, такие как this , но я не нашел способа реализовать мой конкретный пример. Есть идеи?
Дастин Судак