首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在这个位置上无效。更新语句

在这个位置上无效。更新语句
EN

Stack Overflow用户
提问于 2022-03-02 16:02:26
回答 2查看 322关注 0票数 0

我有这段来自在线Server教程的代码。我需要将它转换为MySql。我已经将ISNULL更改为ifnull,但问题标题中仍然有错误:

代码语言:javascript
运行
复制
UPDATE a 
SET PropertyAddress = ifnull(a.PropertyAddress, b.PropertyAddress)
FROM Nashvillehousing as a 
JOIN Nashvillehousing as b
    ON a.ParcelID = b.ParcelID
    AND a.UniqueID <> b.UniqueID
WHERE a.PropertyAddress IS NULL;

如何在MySql上运行这个问题呢?

EN

回答 2

Stack Overflow用户

发布于 2022-03-02 16:35:57

你不需要加入。

代码语言:javascript
运行
复制
UPDATE nashvillehousing 
SET propertyaddress = 
(
  SELECT ANY_VALUE(src.propertyaddress)
  FROM (select * from nashvillehousing) src
  WHERE src.parcelid = nashvillehousing.parcelid
  AND src.uniqueid <> nashvillehousing.uniqueid
)
WHERE propertyaddress IS NULL;

我不得不写FROM (select * from nashvillehousing) src,而不是仅仅写FROM nashvillehousing src。这是由于MySQL中的一个限制,您不能直接从正在更新的同一表中选择。

原始语句假设您最多可以为一个parcelid找到两行。这通常不能保证是这样的,所以我使用ANY_VALUE来获得这个安全。(当然,如果您更喜欢这一点,也可以在这里使用MINMAX。)

票数 0
EN

Stack Overflow用户

发布于 2022-03-02 16:15:22

在更新中使用联接的MySql语法与Server不同。我不常为MySql写这个,但我认为您需要这样做:

代码语言:javascript
运行
复制
UPDATE Nashvillehouse as a 
INNER JOIN Nashvillehouse as b 
    ON a.ParcelID = b.ParcelID
    AND a.UniqueID <> b.UniqueID
SET a.PropertyAddress = ifnull(a.PropertyAddress, b.PropertyAddress)
WHERE a.PropertyAddress IS NULL;
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71325700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档