2013-08-24 189 views
3

我遇到了一些SQL問題。 我試圖將2個值插入到我的表中。 ('''''''''''''''');這是我的查詢:INSERT INTO tableinfo(table,date)VALUES('Sell','8月24日'); 但它不工作。我有類似的東西:INSERT INTO PostgreSQL

SQL error: 
ERROR: syntax near "INTO" 
LINE 1: SELECT COUNT(*) AS total FROM (INSERT INTO tableinfo (table,... 
              ^
In statement:: 
SELECT COUNT(*) AS total FROM (INSERT INTO tableinfo (table,date) VALUES ('Sell','24 August')) AS sub 

這是非常基本的,所以我不知道爲什麼它不工作:( 的PostgreSQL 9.2.4

+0

什麼是錯誤訊息? – Jost

+0

你不能像這樣組合一個插入和一個SELECT。你想達到什麼目的? (你可能想將psql切換到英文錯誤消息,以便這裏的每個人都可以閱讀它們)。 –

+1

你使用phpAdmin嗎? –

回答

4

這不是,這是問題的INSERT,它是您試圖發出無效的SQL。首先試試你的插入,然後一個單獨的COUNT(*)查詢,或者如果你正在使用PostgreSQL 9.1+可以使用Common Table Expressions並返回

WITH ins AS (
    insert into tableinfo ("table","date") 
    values ('Sell','24 August') RETURNING "table" 
) 
select count(*) 
from ins; 
+1

[數據修改CTE又名可寫CTE](http://www.postgresql.org/docs/9.1/static/queries-with.html#QUERIES-WITH-MODIFYING)自Postgres 9.1開始提供。 –

+0

哦,對,我總是忘記 - 我在生產中從9.0跳到9.2。謝謝,我會更新我的答案以反映這一點。 – bma

0

錯誤消息是不理解但是,只要它是可見的,你無法從執行的操作中選擇(INSERT)。 SELECT語句僅在從關係中選擇後才顯示。如果允許執行單個執行,則可以選擇分別執行2個查詢或使用事務。

+0

您可以從INSERT語句的結果中進行選擇。看到bma的回答。但至少在我看來,這是完全不清楚的,究竟是OP究竟在做什麼。 –

0

據我知道你輸入你的select是不是底層表所在的數據是通過insert語句插入,但在這裏失蹤的INSERT語句(如RETURNING)的返回值。

看看(優秀)Postgres documentation,尤其是with_query_name部分,可以使用插入。

3

我已經安裝phpPgAdmin來嘗試重現您的錯誤。我得到了它馬上試圖創建一個測試表時:

enter image description here

所以看起來像phpPgAdmin的包木窗查詢到select count(*) as total from (...)。我發現只有當複選框在查詢頁面上設置爲「分頁結果」(顯然,phpPgAdmin試圖計算它將獲得多少行然後逐頁顯示它)時,纔會發生這種情況。取消選中它,您的查詢將正常工作:

enter image description here

+0

好的偵探! +1 – bma

+0

美好的一天,新的英語單詞到我的語法:) –