MYSQL:选择列名在单独表上定义的列中的值

标签 mysql dynamic

我不确定仅使用 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'

Demo here

关于MYSQL:选择列名在单独表上定义的列中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37922711/

相关文章:

c# - 如何从动态中获取 Linq 选择值?

c++ - 在类构造函数中动态定义堆栈,它是私有(private)成员

mysql - 如何在MYSQL中检查记录是否存在并进行Insert?

mysql - 从 csv 导入到 mysql 时执行命令期间遇到 fatal error

sql - 聚合保留具有最大值的行

php - 保存动态创建页面的原始 html

MySQL 与 NULL 值相关的唯一键与主键

php - 从 FTP 到 Bitbucket/Dropbox/Box

java - 使用 EditText 动态制作布局 - Android

ios - 无法添加一致的高度和填充。动态表格 View 单元格之间