MySQL如何关联Node与Equipment表(Node.id为Equipment.id子串)补充longName列
解决方案
直接使用以下SQL查询即可实现需求:
SELECT e.id, e.shelf, e.slot, n.longName FROM Equipment e -- 如果不需要保留未匹配到节点的设备记录,可将LEFT JOIN改为INNER JOIN LEFT JOIN Node n ON e.id LIKE CONCAT(n.id, '%');
优化建议
因为你的Equipment表id是节点id + :: + 设备标识的固定拼接规则,为了避免极端场景下的误匹配(比如存在短节点id是长节点id前缀的情况),可以将关联条件修改为更精准的匹配规则:
ON e.id LIKE CONCAT(n.id, '::%')
数据库兼容说明
如果使用Oracle数据库,拼接语法可替换为Oracle原生的||运算符:
ON e.id LIKE n.id || '::%'
内容的提问来源于stack exchange,提问作者opticMan
相关产品推荐
相关产品推荐

