如何编写SQL查询指定good.id对应的所有good_translation子表数据
实现SQL查询指定good.id对应子表数据的方法
单查子表good_translation数据
如果你只需要获取对应商品的所有翻译记录,不需要父表good的字段,直接按外键过滤即可:
-- 将下方的[指定good.id]替换为你要查询的实际ID值 SELECT * FROM good_translation WHERE translatable_id = [指定good.id];
同时关联父表good的字段查询
如果你需要同时拿到父表商品的基础信息和对应的翻译数据,使用关联查询即可:
-- 将下方的[指定good.id]替换为你要查询的实际ID值 SELECT g.*, gt.* FROM good g LEFT JOIN good_translation gt ON g.id = gt.translatable_id WHERE g.id = [指定good.id];
额外可选过滤条件
- 若需要筛选指定语言的翻译结果,可在WHERE条件后追加对应过滤规则,示例:
-- 过滤仅返回中文翻译结果,语言编码根据你实际存储的规则调整 SELECT * FROM good_translation WHERE translatable_id = 123 AND language = 'zh_CN'; - 表结构中已配置
translatable_id关联good.id的外键,且触发规则为ON DELETE CASCADE,父表商品记录删除时关联的翻译记录会自动同步删除,查询时不会出现无对应父表的脏数据。
内容的提问来源于stack exchange,提问作者Andrii
相关产品推荐
相关产品推荐

