Das Problem ist, dass der Prozedurparameter den gleichen Namen hat wie eine Spalte in den Tabellen. Wenn Sie sich auf propertyid
beziehen in den Abfragen verwendet es die Spalte, nicht den Parameter. Bei Spalten- und Variablennamen wird die Groß-/Kleinschreibung nicht beachtet, daher spielt es keine Rolle, ob Sie einen von ihnen PropertyID
geschrieben haben und die andere propertyId
.
Verwenden Sie einen anderen Namen für den Parameter, z. p_propertyId
Außerdem sind keine zwei Abfragen erforderlich, Sie können dies in einer mit einem JOIN
tun .
UPDATE sales.florida AS s
CROSS JOIN (
SELECT *
FROM annuals.florida
WHERE propertyId = p_propertyId
LIMIT 1) AS a
SET s.SitusLongitude = a.SitusLongitude, s.SitusLatitude = a.SitusLatitude
WHERE s.PROPERTYUNIQUEID = p_propertyId
Beachten Sie, dass die Verwendung von LIMIT
ohne ORDER BY
bedeutet, dass die ausgewählte Zeile unvorhersehbar ist.