我有一个包含多个表的 MySQL 数据库,这些表包含多个相等的列,我想将这些数据推送到 Google 电子表格中。
例如:
table1
包含 id
、name
、page
以及一些特定于该表的列。
table2
包含 id
、name
、page
和几个不同的列
table3
还有id
、name
、page
以及更多独特的列等。
这是我的代码:
function readFromTable() {
var ss = SpreadsheetApp.getActive();
var sheetDetails = ss.getSheetByName('Details');
var sheetData = ss.getSheetByName('Clients');
var host = sheetDetails.getRange("B1").getValue();
var databaseName = sheetDetails.getRange("B2").getValue();
var userName = sheetDetails.getRange("B3").getValue();
var password = sheetDetails.getRange("B4").getValue();
var port = sheetDetails.getRange("B5").getValue();
var url = 'jdbc:mysql://'+host+':'+port+'/'+databaseName;
Logger.log(url);
Logger.log(userName);
Logger.log(password);
var sql = 'SELECT id, name, page FROM table1 UNION SELECT id, name, page FROM table2 UNION SELECT id, name, page FROM table3';
try{
var connection = Jdbc.getConnection(url, userName, password);
var results = connection.createStatement().executeQuery(sql);
var metaData = results.getMetaData();
var columns = metaData.getColumnCount();
// Retrieve metaData to a 2D array
var values = [];
var value = [];
var element = '';
// Get table headers
for(i = 1; i <= columns; i ++){
element = metaData.getColumnLabel(i);
value.push(element);
}
values.push(value);
// Get table data row by row
while(results.next()){
value = [];
for(i = 1; i <= columns; i ++){
element = results.getString(i);
value.push(element);
}
values.push(value);
}
// Cloese connection
results.close();
// Write data to sheet Data
SpreadsheetApp.flush();
sheetData.getRange(2, 1, values.length, value.length).setValues(values);
SpreadsheetApp.getActive().toast('The data has been updated.');
}catch(err){
SpreadsheetApp.getActive().toast(err.message);
}
}
是否可以在一个查询中从所有三个表中选择 id、name 和 page,并按到达顺序获取结果?我在每个表中一一输入相同的id,我的意思是,table1
中的1
,table2
中的1
和 table3
中的 1
按此顺序,然后我对 2
等执行相同操作,输出应如下所示:
id
名称
页面
1
名称1
玩具
1
名称2
食物
1
name3
电子产品
2
name4
玩具
2
name5
食物
2
name6
电子产品
3
name7
玩具
3
name8
食物
3
name9
电子产品
但是在输出中它们按表分组,这对我不起作用:
id
名称
页面
1
名称1
玩具
2
name4
玩具
3
name7
玩具
1
名称2
食物
2
name5
食物
3
name8
食物
1
name3
电子产品
2
name6
电子产品
3
name9
电子产品
我想发布一张照片,但我没有足够的声誉。
我需要按到达顺序输出,有什么建议吗?
最佳答案
您可以使用ORDER BY
子句:
var sql = '(SELECT id, name, page FROM table1) UNION (SELECT id, name, page FROM table2) UNION (SELECT id, name, page FROM table3) ORDER BY id';
关于javascript - 从不同的表中选择并组织相同的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56240838/