Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在将结果插入HSQLDB表时,如何对其排序?_Sql_Hsqldb - Fatal编程技术网

在将结果插入HSQLDB表时,如何对其排序?

在将结果插入HSQLDB表时,如何对其排序?,sql,hsqldb,Sql,Hsqldb,当我使用HSQLDB运行以下脚本时,会收到错误消息用户缺少权限或找不到对象:T2C1。在将行插入表表3时,如何对行进行排序?我可以在不添加其他表的情况下实现此目标吗 请注意,如果我按“T2C1”、“T1C2”注释行顺序,则不会得到任何错误消息,但表3也不会得到排序 DROP TABLE "PUBLIC"."TABLE1" IF EXISTS; CREATE TABLE "PUBLIC"."TABLE1" ( "C1" VARCHAR(10), "C2" VARCHAR(10), "

当我使用HSQLDB运行以下脚本时,会收到错误消息
用户缺少权限或找不到对象:T2C1
。在将行插入表
表3
时,如何对行进行排序?我可以在不添加其他表的情况下实现此目标吗

请注意,如果我按“T2C1”、“T1C2”注释行
顺序,则不会得到任何错误消息,但
表3
也不会得到排序

DROP TABLE "PUBLIC"."TABLE1" IF EXISTS;

CREATE TABLE "PUBLIC"."TABLE1" (
  "C1" VARCHAR(10),
  "C2" VARCHAR(10),
  "C3" VARCHAR(10)
);

INSERT INTO "PUBLIC"."TABLE1" ("C1", "C2", "C3") VALUES ('a', 'b', 'c');
INSERT INTO "PUBLIC"."TABLE1" ("C1", "C2", "C3") VALUES ('d', 'e', 'f');

DROP TABLE "PUBLIC"."TABLE2" IF EXISTS;

CREATE TABLE "PUBLIC"."TABLE2" (
  "C1" VARCHAR(10),
  "C2" VARCHAR(10),
);

INSERT INTO "PUBLIC"."TABLE2" ("C1", "C2") VALUES ('a', 'b');
INSERT INTO "PUBLIC"."TABLE2" ("C1", "C2") VALUES ('u', 'v');

DROP TABLE "PUBLIC"."TABLE3" IF EXISTS;

CREATE TABLE "PUBLIC"."TABLE3" (
  "C1" VARCHAR(10),
  "C2" VARCHAR(10),
);

INSERT INTO "PUBLIC"."TABLE3" (
  "C1",
  "C2"
)
SELECT 
(SELECT
"T2"."C1" AS "T2C1"
FROM "PUBLIC"."TABLE2" "T2"
WHERE "T2"."C1" = "T1"."C1"),
"T1"."C2" AS "T1C2"
FROM "PUBLIC"."TABLE1" "T1"
ORDER BY "T2C1", "T1C2"
;

* *DSV_COL_DELIM=,
* *DSV_ROW_DELIM=\n
* *DSV_TARGET_FILE=results.csv

\x "PUBLIC"."TABLE3"

这对我来说没有太大意义,因为插入的顺序与其他人在各种论坛上已经提到的无关:


我认为HSQLDB只是给出了错误的错误消息。它不适用于MSSQL。

hsqldb2.2.x支持在此处使用ORDER。SELECT的问题是标量子查询缺少列别名T2C1。试试这个:

INSERT INTO "PUBLIC"."TABLE3" (
  "C1",
  "C2"
)
SELECT 
(SELECT
"T2"."C1" AS "T2C1"
FROM "PUBLIC"."TABLE2" "T2"
WHERE "T2"."C1" = "T1"."C1") AS T2C1,
"T1"."C2" AS "T1C2"
FROM "PUBLIC"."TABLE1" "T1"
ORDER BY "T2C1", "T1C2"
;