2011-11-17 39 views
1

當我使用HSQLDB運行以下腳本時,出現錯誤消息user lacks privilege or object not found: T2C1。如何將行插入表TABLE3?我可以在不添加其他表的情況下實現這一目如何在將結果插入到HSQLDB表中時對結果進行排序?

請注意,如果我對線條ORDER BY "T2C1", "T1C2"發表評論,我將不會收到任何錯誤消息,但TABLE3也不會被排序。

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" 

回答

0

HSQLDB 2.2.x支持在這裏使用ORDER BY。您的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" 
; 
相關問題