gpt4 book ai didi

mysql - 字符串的匹配返回 SQL 中另一个表的结果

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

这应该相当简单,但我仍然从 SQL 开始,所以......

我有一个手机号码表(手机),如下所示:

mobile_number
------------
1406-09-227
1206-09-221
1104-97-221
1507-92-329

手机号码的最后一位数字表示州和城市。每个城市都是城市 key 和州 key 的组合。因此,虽然 221 可能同时指示柏林和魏斯巴登,但指示哪个是状态 key 才是。 97+221 = 魏斯巴登,09+221 = 柏林。为了检查这一点,我有表base:

state_number | city_number| state | city    
-------------|------------|-------|---------
09 | 227 | Hesse | Frankfurt
09 | 221 | Hesse | Weisbaden
97 | 221 | Berlin| Berlin
92 | 329 | Sarre | Saarbrücken

对。我有第三个表(````mobilecity````),它是 mobile_number 和城市。这就是我开始遇到问题的地方。该表是前两个表的结果。我希望事情是这样的:

mobile_number | city
--------------|------
1406-09-227 | Frankfurt
1206-09-221 | Weisbaden
1104-97-221 | Berlin
1507-92-329 | Saarbrücken

我不知道如何开始。基本上我需要用电话号码跨越州和城市列并返回电话号码和城市。

最佳答案

您可以使用加入。这是一种方法:

select mp.*, b.*
from mobilephones mp left join
base b
on mp.mobile_number like concat('%-', b.state_number, '-', b.city_number);

或者,您可以将其表述为:

select mp.*, b.*
from mobilephones mp left join
base b
on substring_index(substring_index(mp.mobile_number, '-', -2), '-', 1) = b.state_number and
substring_index(mp.mobile_number, '-', -1) = b.city_number;

这看起来更复杂,但它可能会使用 base(state_number, mobile_number) 上的索引。

关于mysql - 字符串的匹配返回 SQL 中另一个表的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59091092/

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