我正在尝试使用 JOIN
但我有一份文件,上面的身份证第一个位置有一封信。我在做请求时需要省略它。列的值 service
等于 tbl2
没有“s”字符)。
以下是表格:
tbl1级
-------------------
| id | service |
-------------------
| 58186 | S83968 |
| ... | ... |
tbl2型
-------------------
| id | domain |
-------------------
| 83968 | serv123 |
| ... | ... |
我尝试的是:
SELECT `domain`
FROM `tbl2`
INNER JOIN `tbl1`
WHERE tbl2.id = tbl1.SUBSTR(service, 2)
AND id = '58186';
它返回一个错误:
.#1630-函数tbl1.substr不存在。检查参考手册中的“函数名解析和解析”部分
预期结果:
-----------
| domain |
-----------
| serv123 |
2条答案
按热度按时间uelo1irk1#
实际上我更喜欢加上
'S'
另一个id:这似乎是一个细微的差别。然而,在某些情况下
tbl2.id
可能是个数字。由于转换规则的原因,可能会出现类型转换错误(在某些数据库中)或意外结果(在mysql中),如果其中有(不匹配的)值service
无法转换为数字。j2cgzkjk2#
你可以在下面尝试-你需要添加
SUBSTR(tbl1.service, 2)
不是tbl1.SUBSTR(service, 2)
```SELECT
domain
FROM
tbl2
INNER JOIN
tbl1
WHERE tbl2.id = SUBSTR(tbl1.service, 2)
AND tbl1.id = '58186'