2017-04-09 42 views
0
INSERT INTO EMP_1 (EMP_NUM, EMP_LNAME, EMP_FNAME, EMP_INITIAL, EMP_HIREDATE, JOB_CODE) 
VALUES ('101', 'News', 'John', 'G', '08-Nov-00', '502'), 
('102', 'Senior', 'David', 'H', '12-Jul-89', '501'); 

我一直在尋找了一段時間,而且大多數人說,但兩組之間的逗號,但是當我這樣做,它說,它缺少在一個;所以然後我將它們與;分開,並在分號後得到有關代碼的錯誤,這是可以理解的。訪問SQL - 插入多行不會工作

我甚至試過SELECTUNIONALL無果而只是檢查出this但仍建議SELECTUNIONALL。有什麼我完全錯過了嗎?

我使用MS Access 2016,在此先感謝您的幫助。

+0

爲什麼你需要這樣做?如果它將從某處(它必須是)執行,爲什麼不只是執行多個語句? – jleach

+0

在不同查詢中有多個語句,或者在同一個查詢中有兩組代碼?因爲我試過這樣做,但它不允許第二塊代碼。 **另外**它必須在一個查詢中。 – Josh

+0

也許這會幫助你。 http://stackoverflow.com/questions/1838593/how-do-i-execute-multiple-sql-statements-in-access-query-editor – Jason

回答

1

你給已經指出,你不能做

insert into foo (c1, c2, c3) 
values ("v1a", "v2a", "v3a"), 
     ("v1b", "v2b", "v3b"), 
     ("v1c", "v2c", "v3c") 

而這正是你現在正在做的方式鏈接。

嘗試

INSERT INTO EMP_1 (EMP_NUM, EMP_LNAME, EMP_FNAME, EMP_INITIAL, EMP_HIREDATE, JOB_CODE) 
    SELECT * 
    FROM (select top 1 "101" AS EMP_NUM, "News" AS EMP_LNAME, "John" AS EMP_FNAME, "G" AS EMP_INITIAL, "08-Nov-00" AS EMP_HIREDATE, "502" AS JOB_CODE from onerow 
    union all 
    select top 1 "102" AS EMP_NUM, "Senior" AS EMP_LNAME, "David" AS EMP_FNAME, "H" AS EMP_INITIAL, "12-Jul-89" AS EMP_HIREDATE, "501" AS JOB_CODE from onerow) 

我不知道MS-訪問的SQL。但是"與SQL中的'不同。看來你給的鏈接使用"作爲答案。爲什麼不試試呢?但一般'應該用於字符串值。

+0

這個作品,非常感謝你,儘管我沒有完全理解'選擇頂部1'。我改變了'onerow'到它鏈接到的表(外鍵),它的工作完美。 – Josh

+0

TOP 1僅用於將結果限制爲第一個。我很高興它可以幫助:) –

0

MS Access不允許使用單個insert . . . values插入多行。我認爲「典型」的MS Access解決方案是:

INSERT INTO EMP_1 (EMP_NUM, EMP_LNAME, EMP_FNAME, EMP_INITIAL, EMP_HIREDATE, JOB_CODE) 
    VALUES ('101', 'News', 'John', 'G', '08-Nov-00', '502'); 
INSERT INTO EMP_1 (EMP_NUM, EMP_LNAME, EMP_FNAME, EMP_INITIAL, EMP_HIREDATE, JOB_CODE) 
    VALUES ('102', 'Senior', 'David', 'H', '12-Jul-89', '501'); 
+0

這在MS Access中不起作用,因爲在第一個';'之後它說'在SQL語句結束後發現字符。' – Josh

+0

@Josh。 。 。你必須執行這兩個語句。 –