是否可以使用另一个 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。
答案 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'])