首页 > 解决方案 > MySQL - 将值评估为字段名称

问题描述

嗨 stackoverflow 社区,

我想知道是否可以将值评估为 MySQL 请求中的字段。

这是我的问题:
我有一个post表(id,lg,text)和一个lang表(id,lg1,lg2,lg3)。我在 lg1/lg2/lg3 中的帖子翻译链接如下表lang

示例:
in lang:
id: 1 - lg1: 1 - lg2: 2 - lg3: 7

in post:
id: 1 - lg: lg1 - text: my text in lg1 language
id: 2 - lg: lg2 - text: my text in lg2 language
id: 7 - lg: lg3 - text: my text in lg3 language

现在我想从帖子 ID(例如:2)和语言(例如:lg2)中获取所有翻译,这是我的请求:

select p.* from `post` p left join `lang` l on
(
        (l.lg1 = p.id) or
        (l.lg2 = p.id) or
        (l.lg3 = p.id)
) where l.lg2 = 2;


但如果我想添加一种语言,我将不得不改变我所有的要求......如果我能做这样的事情:

select p.* from `post` p left join `lang` l on
(l.eval(p.lg) = p.id)
where l.lg2 = 2;

那会很好。

任何想法?

标签: mysqldatabaseeval

解决方案


推荐阅读