我有SQL查询需要通过子查询进行一些计算。
INSERT INTO db.my_new_table
SELECT db.table1.id , db.table1.value * db.table2.factor AS myValue
FROM
(
SELECT a.id, SUM(a.value) AS factor
FROM db.table0 a
GROUP by a.id
) AS table1
JOIN db.table2 AS b
ON db.table1.id = b.id;
但是,我收到了错误:
ERROR [HY000] ERROR: Cross Database Access not supported for this type of command
在db上运行查询之前,我不想先创建新表。 我可以访问db。 我想同时创建和插入。
谢谢!
答案 0 :(得分:1)
问题出在您的列引用中。您不需要使用模式为列添加前缀,只需使用别名。此外,您的子查询没有字段" value&#34 ;;我想你可能已经转换了字段。试试这个:
INSERT INTO db.my_new_table
SELECT a.id,
a.factor * b.value AS myValue
FROM (
SELECT id, SUM(value) AS factor
FROM db.table0
GROUP by id
) AS a
JOIN db.table2 AS b
ON a.id = b.id;
答案 1 :(得分:0)
如果您的问题确实存在,并且您没有表格并想要将其作为插入语句的一部分创建,只需将插入更改为CREATE TABLE db.my_new_table AS SELECT ....