Mysql 如何根据另一个表中作为行给定的值筛选一个表中的列?

Mysql 如何根据另一个表中作为行给定的值筛选一个表中的列?,mysql,sql,Mysql,Sql,我在MySQL中有两个表。我想从main_表中选择列,这些列在cols_filter表中作为行给出(这是一个可以随时编辑的小表) 主表: +--------+--------+---------+-------+-------+ | Col_A | Col_B | Col_C | Col_D | Col_E | +--------+--------+---------+-------+-------+ | Apple | 585416 | Monday | 0 | Y

我在MySQL中有两个表。我想从main_表中选择列,这些列在cols_filter表中作为行给出(这是一个可以随时编辑的小表)

主表:

+--------+--------+---------+-------+-------+
| Col_A  | Col_B  |  Col_C  | Col_D | Col_E |
+--------+--------+---------+-------+-------+
| Apple  | 585416 | Monday  |   0   |   Y   |
| Banana | 857463 | Sunday  |   1   |   N   |
| Orange | 852147 | Friday  |   0   |   N   |
| Plum   | 753951 | Sunday  |   1   |   Y   |
| Peach  | 448691 | Monday  |   0   |   N   |
+--------+--------+---------+-------+-------+
+--------+
| names  |
+--------+
| Col_A  |
| Col_B  |
| Col_E  |
+--------+
+--------+--------+-------+
| Col_A  | Col_B  | Col_E |
+--------+--------+-------+
| Apple  | 585416 |   Y   |
| Banana | 857463 |   N   |
| Orange | 852147 |   N   |
| Plum   | 753951 |   Y   |
| Peach  | 448691 |   N   |
+--------+--------+-------+
cols\u过滤器:

+--------+--------+---------+-------+-------+
| Col_A  | Col_B  |  Col_C  | Col_D | Col_E |
+--------+--------+---------+-------+-------+
| Apple  | 585416 | Monday  |   0   |   Y   |
| Banana | 857463 | Sunday  |   1   |   N   |
| Orange | 852147 | Friday  |   0   |   N   |
| Plum   | 753951 | Sunday  |   1   |   Y   |
| Peach  | 448691 | Monday  |   0   |   N   |
+--------+--------+---------+-------+-------+
+--------+
| names  |
+--------+
| Col_A  |
| Col_B  |
| Col_E  |
+--------+
+--------+--------+-------+
| Col_A  | Col_B  | Col_E |
+--------+--------+-------+
| Apple  | 585416 |   Y   |
| Banana | 857463 |   N   |
| Orange | 852147 |   N   |
| Plum   | 753951 |   Y   |
| Peach  | 448691 |   N   |
+--------+--------+-------+
预期输出:

+--------+--------+---------+-------+-------+
| Col_A  | Col_B  |  Col_C  | Col_D | Col_E |
+--------+--------+---------+-------+-------+
| Apple  | 585416 | Monday  |   0   |   Y   |
| Banana | 857463 | Sunday  |   1   |   N   |
| Orange | 852147 | Friday  |   0   |   N   |
| Plum   | 753951 | Sunday  |   1   |   Y   |
| Peach  | 448691 | Monday  |   0   |   N   |
+--------+--------+---------+-------+-------+
+--------+
| names  |
+--------+
| Col_A  |
| Col_B  |
| Col_E  |
+--------+
+--------+--------+-------+
| Col_A  | Col_B  | Col_E |
+--------+--------+-------+
| Apple  | 585416 |   Y   |
| Banana | 857463 |   N   |
| Orange | 852147 |   N   |
| Plum   | 753951 |   Y   |
| Peach  | 448691 |   N   |
+--------+--------+-------+
我试图创建一个带有GROUP_CONCAT的子查询,以便将cols_filter中的所有行作为逗号分隔的值放在一行中:

SELECT GROUP_CONCAT(names) AS Columns
FROM cols_filter

+---------------------+
|       Columns       |
+---------------------+
| Col_A, Col_B, Col_E |
+---------------------+
。。。并在主查询中将其作为列表使用,而不是将某些列名放在那里,但它不起作用


我在这里找不到类似的问题。有什么想法吗?

框架SQL不能在数据库本身中是动态的,但可以通过在顶部进行少量编程来实现。您可以使用任何编程语言(python/java/scala)动态生成SQL并向数据库发出查询。

这需要动态SQL。我可能认为,这种需要表明应用程序中存在一个潜在的缺陷。