gpt4 book ai didi

mysql - 在 mysql 中一起使用 concat 和 substring/substring_index 时出现 SQL 错误 1166

转载 作者:行者123 更新时间:2023-12-04 10:03:13 27 4
gpt4 key购买 nike

我在 mysql 中同时使用 concat 和 substring_index 时遇到一个奇怪的错误,我的代码在这里

CREATE TEMPORARY TABLE candidate (ori int, dest int, myPath varchar(500), depth int ) as (
select transforms.ori, baseTransforms.dest, concat(substring_index(baseTransforms.road,',',-1),',',substring_index(transforms.road,',',1)), 2
from transforms, baseTransforms
where transforms.dest=baseTransforms.ori and transforms.ori <> baseTransforms.dest);

定义在这里
create table baseTransforms(
ori int,
dest int,
road varchar(500)
);
create table transforms(
ori int,
dest int,
road varchar(500)
);

和baseTransform的数据是这样填充的
insert into baseTransforms select * from transforms;

然后我得到

Error Code: 1166. Incorrect column name 'concat(substring_index(baseTransforms.road,',',-1),',',substring_index(transforms.road,',',1))'



但是当我通过删除 substring_index 阶段之一来修改代码时,它不会引发错误,即
CREATE TEMPORARY TABLE candidate (ori int, dest int, myPath varchar(500), depth int ) as (
select transforms.ori, baseTransforms.dest, concat(',',substring_index(transforms.road,',',1)), 2
from transforms, baseTransforms
where transforms.dest=baseTransforms.ori and transforms.ori <> baseTransforms.dest);


CREATE TEMPORARY TABLE candidate (ori int, dest int, myPath varchar(500), depth int ) as (
select transforms.ori, baseTransforms.dest, concat(substring_index(baseTransforms.road,',',-1),','), 2
from transforms, baseTransforms
where transforms.dest=baseTransforms.ori and transforms.ori <> baseTransforms.dest);

两者都很好用,所以实际上两个列名都是正确的,这太令人困惑了。

附言当我尝试使用 substring 函数而不是 substring_index 时,它遇到了同样的问题。

谁能帮我解决这个问题?

最佳答案

Column names can be a maximum of 64 characters long ,但您的 CONCAT表达式(默认情况下,它成为子查询中的列名)超过了这个值。

你可以把 AS path (或类似)在它之后,给列一个固定的短名称。

关于mysql - 在 mysql 中一起使用 concat 和 substring/substring_index 时出现 SQL 错误 1166,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61729217/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com