编辑:
我有一张表:比如说 TABLE1,这是数据:
--------------------------
COL1 | COL2 | COL3 | COL4
--------------------------
1 | 10 | 100 | 1000
1 | 10 | 100 | 1000
1 | 10 | 100 | 1000
--------------------------
然后说 TABLE2,
---------------------------
ID | COL_NAMES
---------------------------
1 | COL3
2 | COL4
---------------------------
现在我要做的是从表 2 中选择列名,对于这个列名,将表 1 中的所有值设置为 0, 这应该是最终结果:
--------------------------
COL1 | COL2 | COL3 | COL4
--------------------------
1 | 10 | 0 | 0
1 | 10 | 0 | 0
1 | 10 | 0 | 0
--------------------------
如何编写查询?
最佳答案
如果你想在 Table1
上SELECT
,你可以这样做:
SELECT CONCAT('SELECT ', GROUP_CONCAT(c.COLUMN_NAME),',',
(SELECT GROUP_CONCAT(0,' as ',t2.COL_NAMES) FROM table2 t2),' FROM table1;')
INTO @query
FROM INFORMATION_SCHEMA.COLUMNS c
WHERE c.TABLE_NAME = 'table1'
AND c.COLUMN_NAME not in (select COL_NAMES from table2)
ORDER BY c.ORDINAL_POSITION;
PREPARE stmt FROM @query;
EXECUTE stmt;
SELECT Query
如果你想更新 table1
,你可以使用这个查询来更新它:
SELECT CONCAT('UPDATE TABLE1 SET ', GROUP_CONCAT(c.COLUMN_NAME, ' = ', 0) )
INTO @query
FROM INFORMATION_SCHEMA.COLUMNS c
WHERE c.TABLE_NAME = 'table1'
AND c.COLUMN_NAME in (select COL_NAMES from table2)
ORDER BY c.ORDINAL_POSITION;
PREPARE stmt FROM @query;
EXECUTE stmt;
UPDATE Query
关于mysql - SQL 查询语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22420024/