此问题已在此处有答案:
Update statement with inner join on Oracle(15个回答)
11天前关闭
| uniqueID| Parcel_id|地址|
| --|--|--|
| 38077 |025 07 0 031.00| 410 ROSEHILL CT,Goodlettsville|
| 43076 |025 07 0 031.00|(空)|
UPDATE h
SET address = COALESCE(h.address, h2.address)
FROM housing h
JOIN housing h2
ON h.parcel_id = h2.parcel_id
WHERE h.unique_id <> h2.unique_id
AND h.address IS NULL;
我需要做的是填充空记录的地址字段,使用来自相同包裹ID但不同唯一ID的地址。
--选择查询当前通过填充空字段显示记录
SELECT h.unique_id,h.parcel_id,h2.parcel_id,h.address,h2.address, coalesce(h.address,h2.address)
FROM housing h, housing h2
WHERE h.parcel_id = h2.parcel_id
AND h.unique_id <> h2.unique_id AND h.address is null;
我试图更新值有相同的包裹ID,但地址列是空的,请建议是否有任何其他的方法,它或在我这里错了。
我希望这次我说清楚了。很抱歉有任何错误,这是我第一次在这里发帖。先谢了。
1条答案
按热度按时间vbopmzt11#
以下列形式使用更新或合并:
不过,你同时指定了
coalesce
和where
子句有点奇怪,因为:where
表示只更新h.address is null
所在行,而coalesce(h.address, h2.address)
表示您应该将h2.address
放入h.address
如果h.address
为null因此,删除其中一个;
coalesce
可能是一个更好的选择(要删除),因为where
会导致更少的行受到影响,因此性能可能会更好。