是否可以使用另一个 select 语句的结果创建一个 select 语句?

时间:2021-02-20 14:01:16

标签: sql mariadb subquery

是否可以使用另一个 select 语句的结果创建一个 select 语句?

重要的是,Table2 可以有不同数量的列。

示例:

Table1: 
+------+------+
| colA | colB | 
+------+------+
| colE |   0  | 
| colF |   0  | 
+--------+----+

Table2:
+------+------+------+
| colE | colF | colG |
+------+------+------+
|   1  |   1  |   1  |
|   1  |   1  |   1  |
+------+------+------+

select colA from Table1 where colB = '0';  
Result:
colE
colF

现在我想对 Table2 中列名与上面结果相同的列的所有值求和(colE 和 colF 的所有值的总和)。在这种情况下,结果应该是 4。

我使用 mariaDB。

1 个答案:

答案 0 :(得分:1)

您可以将动态 SQL 与 information_schema.columns 表一起使用,Table2 表提供有关表中列的信息,以便通过加入 Table1 来派生 SELECT GROUP_CONCAT( CONCAT('SUM(',colA,')') SEPARATOR '+' ) INTO @sql FROM ( SELECT t1.colA FROM( SELECT * FROM information_schema.columns WHERE table_name = 'Table2' ) AS c JOIN Table1 AS t1 ON t1.colA = c.column_name ) AS t; SET @sql = CONCAT('SELECT ',@sql,' AS total FROM Table2'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; 的列以获得仅匹配列如

# output some object attributes
print('$ ' + obj["1DyRGJQZZMr9LxRFXHq5AZ4gopqk7pCPZi"]['final_balance'])

Demo