能否通过外键获取关联表其他字段值?MySQL关联查询问题
解决方案
需求完全可实现,无需修改现有表关联逻辑
你现在用assets表的user字段关联users表主键usersId的设计本身更合理,不需要改成关联usersUid,仅通过SQL连表查询就能同时拿到用户ID和用户名:
- 你之前的直接查表逻辑大概率是:
SELECT * FROM assets WHERE [你的查询条件] - 改成左连表查询即可同时获取
usersUid,原有user字段(即usersId)的关联关系完全保留:SELECT a.*, u.usersUid FROM assets a LEFT JOIN users u ON a.user = u.usersId WHERE [你的查询条件]
查询返回的结果集里会自动带usersUid字段,直接用这个字段渲染表格即可。
不建议将关联字段改成usersUid的原因
- 性能更低:
usersUid是字符串类型,作为外键存储、查询的效率远低于数值型的自增主键usersId - 维护成本更高:如果后续有修改用户名的需求,你需要同步更新
assets表所有对应关联记录,很容易出现数据不一致的问题,用主键关联完全不会有这个问题。
可选优化
你可以给assets表的user字段增加外键约束,关联users表的usersId字段,避免出现无效的用户ID导致连表查询拿不到用户名的问题。
内容的提问来源于stack exchange,提问作者O Tal Antiquado
相关产品推荐
相关产品推荐

