SELECT er.pNumber, er.name, ep.fPosition, eo.res
FROM events_shot er, events_shot_final ep, events_shot_final_res eo, events_gear era
WHERE era.idShot=er.idShot AND ep.idPhoto=era.idPhoto AND eo.idShot=era.idShot
AND era.idShot=42 AND eo.shotType='PRT'
AND er.pNumber IN (
SELECT *
FROM STRING_SPLIT(eo.photosId,'-')
)
shotsId 是类似于12-1-8-7 ...的字符串,其中n个 pNumber id以'-'分隔
不幸的是,查询返回此错误:
错误代码:1064。您的SQL语法有错误;检查 与您的MySQL服务器版本相对应的手册 在第7行的'(eo.photosId,'-'))'附近使用的语法
我无法更改数据库,如何更改查询?
您能提供的任何帮助将不胜感激。
答案 0 :(得分:0)
修复您的数据模型!不要在一个列中存储多个值。
学习正确的SQL语法! 从不在FROM
子句中使用逗号。 始终使用正确的,明确的,标准 JOIN
语法。
话虽如此,您无需拆分字符串。您可以使用字符串操作:
AND CONCAT('-', eo.photosId, '-') LIKE CONCAT('%-', er.pNumber, '-%')
但是,一旦使该查询生效,您就应该真正着手修复数据模型。