我不确定仅使用 SQL 是否可以实现这一点...任何帮助将不胜感激:
我正在尝试检索表 B (tblProduct) 中的列中的值。 列名实际上是在引用表A(tblConfig_Group)中定义的。
因此,本质上,我给出了 tblConfig_Group.groupCode 和 tblProduct.VCI 值
我需要检索 dbColumnUK 中设置的 tblProduct 中相应列中的值。
tblConfig_Group:
+----+-----------+-------------+
| id | groupCode | dbColumnUK |
+----+-----------+-------------+
| 01 | A | WindowGBP_A |
| 02 | B | WindowGBP_B |
| 03 | C | WindowGBP_C |
| 04 | D | WindowGBP_D |
+----+-----------+-------------+
表产品:
+----+---------+-------------+-------------+-------------+-------------+
| id | VCI | WindowGBP_A | WindowGBP_B | WindowGBP_C | WindowGBP_D |
+----+---------+-------------+-------------+-------------+-------------+
| 01 | vci1 | 1 | 11 | 21 | 31 |
| 02 | vci2 | 2 | 12 | 22 | 32 |
| 03 | vci3 | 3 | 13 | 23 | 33 |
| 04 | vci4 | 4 | 14 | 24 | 34 |
+----+---------+-------------+-------------+-------------+-------------+
最佳答案
您可以使用如下查询:
SELECT CASE g.dbColumnUK
WHEN 'WindowGBP_A' THEN p.WindowGBP_A
WHEN 'WindowGBP_B' THEN p.WindowGBP_B
WHEN 'WindowGBP_C' THEN p.WindowGBP_C
WHEN 'WindowGBP_D' THEN p.WindowGBP_D
END AS col
FROM tblProduct AS p
CROSS JOIN (SELECT dbColumnUK FROM tblConfig_Group WHERE groupCode='A') AS g
WHERE VCI = 'vci2'
关于MYSQL:选择列名在单独表上定义的列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37922711/