2012-10-06 39 views
1

我想將table1table2中的一些內容合併到另一個table3中。我有以下查詢和運行在PostgreSQLSQLite語法錯誤(從PostgreSQL轉換)

CREATE TABLE table3 AS SELECT 
table1.orig_zon AS orig_zon, 
table1.dest_zon AS dest_zon, 
table1.same_zon AS same_zon, 
table1.adjacent AS adjacent, 
table1.distance AS distance, 
table1.da_ivtt AS da_ivtt1, 
table1.da_ovtt AS da_ovtt1, 
table1.tr_avail AS tr_avail1, 
table1.tr_ivtt AS tr_ivtt1, 
table1.tr_ovtt AS tr_ovtt1, 
table1.tr_cost AS tr_cost1, 
table1.au_cost AS au_cost1, 
table1.sr_ivtt AS sr_ivtt1, 
table1.sr_cost AS sr_cost1, 
table2.da_ivtt AS da_ivtt2, 
table2.da_ovtt AS da_ovtt2, 
table2.tr_avail AS tr_avail2, 
table2.tr_ivtt AS tr_ivtt2, 
table2.tr_ovtt AS tr_ovtt2, 
table2.tr_cost AS tr_cost2, 
table2.au_cost AS au_cost2, 
table2.sr_ivtt AS sr_ivtt2, 
table2.sr_cost AS sr_cost2, 
FROM table1, table2 
WHERE ((table1.orig_zon = table2.orig_zon)) AND ((table1.dest_zon = table2.dest_zon)); 

我已經測試過的查詢一個非常小的虛擬數據集,其結果是需要的。但是我實際的數據庫是SQLite,當我在通過Linux外殼的sqlite3的運行此我爲得到一個錯誤:

Error: near "table1": syntax error 

任何人都可以指向我,我需要爲了使在SQLite的這部作品進行修改?謝謝您的幫助!

EDIT1: 刪除尾部逗號後(見克雷格的評論如下)的問題仍然存在。

編輯2: 玩了一下後,我發現修復。看起來非常愚蠢,但如果我要在一行中傳遞查詢的內容,聲明就起作用了!

table2.sr_ivtt AS sr_ivtt2, 
table2.sr_cost AS sr_cost2 FROM table1, table2 WHERE ((table1.orig_zon = table2.orig_zon)) AND ((table1.dest_zon = table2.dest_zon)); 

哦!類型化的禍根!

+0

SQLite的控制檯是換行符終止,所以EDIT2是有道理的。 –

回答

3

SQL不允許在SELECT列表中的尾隨逗號。

​​

應該是:

table2.sr_cost AS sr_cost2 
FROM table1, table2 
+0

謝謝指出!但即使在我改變它之後,問題仍然存在!同樣的錯誤...任何想法爲什麼? – sriramn

+0

@RazorXsr沒有。嘗試逐步簡化查詢,直到它工作,然後弄清楚你最後拿出的部分是什麼。 –

+0

你的修復工作...這只是我不得不改變打字有點......見上面的編輯2 ...感謝您的輸入! – sriramn

1

您需要刪除多餘的逗號

table2.sr_ivtt AS sr_ivtt2, 
table2.sr_cost AS sr_cost2 
FROM table1, table2 
+1

解釋比代碼更好。 –