When I run the following script using HSQLDB, I get the error message user lacks privilege or object not found: T2C1. How can I order the rows as they are inserted into table TABLE3? Can I achieve this goal without adding another table?
Note that if I comment the line ORDER BY "T2C1", "T1C2", I won’t get any error messages but TABLE3 won’t get sorted either.
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 2.2.x supports use of ORDER BY here. The problem with your SELECT is the lack of column alias T2C1 for the scalar subquery. Try this: