[英]How to filter columns of one table by values given as rows in another table?
我在 MySQL 中有兩張桌子。 我想 select 列來自main_table ,它們在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 |
+--------+--------+---------+-------+-------+
cols_filter:
+--------+
| names |
+--------+
| Col_A |
| Col_B |
| Col_E |
+--------+
預期 output:
+--------+--------+-------+
| 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 並將查詢發送到數據庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.