加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

在MySQL的COALESCE中选择

发布时间:2021-03-07 19:57:08 所属栏目:编程 来源:网络整理
导读:我正在实行在MySQL中执行以下操纵: UPDATE xSET y = COALESCE(SELECT z FROM table WHERE a = b AND c = d AND e = f LIMIT 1,SELECT z FROM table WHERE a = b AND c = d LIMIT 1,SELECT z FROM table WHERE a = b LIMIT 1); 这对我来说听起来很有用.我正

我正在实行在MySQL中执行以下操纵:

UPDATE
    x
SET
    y = COALESCE(SELECT z FROM table WHERE a = b AND c = d AND e = f LIMIT 1,SELECT z FROM table WHERE a = b AND c = d LIMIT 1,SELECT z FROM table WHERE a = b LIMIT 1);

这对我来说听起来很有用.我正在实行行使最吻合的值更新列.假如我能找到切合3个尺度的记录 – >这是我必要的谁人.其它一个得当2个尺度,不然记录只匹配一个尺度.

我可以在3个更新查询中执行此操纵,但我不大白为什么这不起浸染.按照manual:

COALESCE返回列表中的第一个非NULL值,假如没有非NULL值,则返回NULL.

这正是我必要的.但它给出以下错误:

错误代码:1064.您的SQL语法有错误;查察与您的MySQL处事器版本对应的手册,以便在“SELECT”四面行使正确的语法

我在这里错过了什么吗?

最佳谜底 您的题目也许是您得到的子选择返回的z值高出1 z.你只能获得一个.

你可以实行:

update x
set y = (select z from t where a = b
         order by (case when a = b and c = d and e = f then 1
                        when a = b and c = d then 2
                        else 3
                   end)
         limit 1
        );

可是,您的特定语法错误是您必要环绕选择括号.以是这是语法上正确的版本:

UPDATE
    x
SET
    y = COALESCE((SELECT z FROM table WHERE a = b AND c = d AND e = f LIMIT 1),(SELECT z FROM table WHERE a = b AND c = d LIMIT 1),(SELECT z FROM table WHERE a = b LIMIT 1));

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读