gpt4 book ai didi

mysql - SQL 工作正常,直到我将 SUBSTR 添加到子查询,然后它才挂起。为什么?

转载 作者:行者123 更新时间:2023-11-29 00:24:50 25 4
gpt4 key购买 nike

我有两个 SQL 表,分别称为 t1 和 t2。两者都有列名 str_id。 str_id 通常是一个 10 位数字的字符串,但我有特殊的 str_id,它们以“sp”开头,后跟一个正常的 10 位 str_id。我想从 t1 中选择所有“sp”str_id,删除 sp,然后在 t2 中查找 str_id。我试过这个查询:

Select
str_id,
desired_column
From
t2
Where
str_id in (
Select
substr(str_id, 3)
From
t1
Where
str_id Like 'sp%' and
other_column = 'my_value'
);

从语法上看,这个命令似乎是正确的,但是当我运行它时,我的 SQL 前端就挂起了。如果我在没有 SUBSTR 的情况下运行命令,那么它执行得很好,但它不会返回我想要的结果,因为所有的 str_ids 都有 sp 前缀。仅供引用,有效的命令是:

Select
str_id,
desired_column
From
t2
Where
str_id In (
Select
str_id
From
t1
Where
str_id Like 'sp%' and
other_column = 'my_value'
);

我该怎么做才能修复上面的查询?

最佳答案

显示这两个的 EXPLAIN 输出,但我假设普通的 mysql 能够直接交叉引用索引,而 SUBSTR 需要创建一个中间结果集,并检查 t2 中的每个项目。这是一个很好的例子,为什么用重要数据作为前缀的值与人们在 1 列中存储分隔字符串一样糟糕:很难使用。

关于mysql - SQL 工作正常,直到我将 SUBSTR 添加到子查询,然后它才挂起。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19438988/

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