2010-11-17 76 views
1

插入300行我有一個名爲租金錶上的MySQLMySQL查詢一次

id, int (5), autoincrement PRIMARY KEY 

dNo, int (5) 

pRent, varchar (5) 

status, varchar (10) 

我需要插入300行到該表

ID和DNO需要匹配

所以最後我們會有id/dNo直到300.這個怎麼做?

Prent公司將有0

狀態的默認值將有空置

我應該使用什麼SQL查詢中插入與ID同時在所有300行的默認值/ DNO自動增量高達300 ?

+0

我可以問你爲什麼本質有兩列包含完全相同的值? – 2010-11-17 10:32:40

回答

1

假設ID設置爲auto increment你可以插入很多然後做一個update table set dNo=id

我不知道你是否能插入過程中設置dNo=id作爲id將NULL

你可能會能夠將dNo默認值設置爲id

編輯:

INSERT INTO `test` (`id`, `id2`) VALUES ('2', `id`) 

工作正常,但如果我設置id=NULL


看起來你有用戶triggers

CREATE TRIGGER set_nDo AFTER INSERT ON test FOR EACH ROW SET `nDo`=`id` 
+0

它工作得很好,但我該如何插入300一次。我應該複製並粘貼? – methuselah 2010-11-17 09:35:44

+1

大聲笑,假設你有地方存放這些值,你可以寫一個腳本或東西將其裝入一個INSERT語句,否則就會給它的所有手動輸入... 我已經給你應該只需要的方式說'INSERT INTO租金(ID,Prent公司,狀態)VALUES((NULL,0, 「懸空」),(NULL,0, 「懸空」))'但你需要的東西,因爲沒有人願意來生成聲明寫全力以赴... – 2010-11-17 09:40:21

0

好點 「合資企業」。 但他也可以設置默認值,之後做一個更新,這樣他就可以在「ID」使用自動遞增值。

+0

我同意,這就是我的建議第一,並看到,因爲這似乎是一個一次性的查詢,這是他應該做的;) – 2010-11-17 10:11:35

0

我發現插入1000

INSERT INTO 
    myTable 
    (
    nr 
    ) 
SELECT 
    SEQ.SeqValue 
FROM 
(
SELECT 
    (HUNDREDS.SeqValue + TENS.SeqValue + ONES.SeqValue) SeqValue 
FROM 
    (
    SELECT 0 SeqValue 
    UNION ALL 
    SELECT 1 SeqValue 
    UNION ALL 
    SELECT 2 SeqValue 
    UNION ALL 
    SELECT 3 SeqValue 
    UNION ALL 
    SELECT 4 SeqValue 
    UNION ALL 
    SELECT 5 SeqValue 
    UNION ALL 
    SELECT 6 SeqValue 
    UNION ALL 
    SELECT 7 SeqValue 
    UNION ALL 
    SELECT 8 SeqValue 
    UNION ALL 
    SELECT 9 SeqValue 
    ) ONES 
CROSS JOIN 
    (
    SELECT 0 SeqValue 
    UNION ALL 
    SELECT 10 SeqValue 
    UNION ALL 
    SELECT 20 SeqValue 
    UNION ALL 
    SELECT 30 SeqValue 
    UNION ALL 
    SELECT 40 SeqValue 
    UNION ALL 
    SELECT 50 SeqValue 
    UNION ALL 
    SELECT 60 SeqValue 
    UNION ALL 
    SELECT 70 SeqValue 
    UNION ALL 
    SELECT 80 SeqValue 
    UNION ALL 
    SELECT 90 SeqValue 
    ) TENS 
CROSS JOIN 
    (
    SELECT 0 SeqValue 
    UNION ALL 
    SELECT 100 SeqValue 
    UNION ALL 
    SELECT 200 SeqValue 
    UNION ALL 
    SELECT 300 SeqValue 
    UNION ALL 
    SELECT 400 SeqValue 
    UNION ALL 
    SELECT 500 SeqValue 
    UNION ALL 
    SELECT 600 SeqValue 
    UNION ALL 
    SELECT 700 SeqValue 
    UNION ALL 
    SELECT 800 SeqValue 
    UNION ALL 
    SELECT 900 SeqValue 
    ) HUNDREDS 
) SEQ 
+0

這樣做後,我使用的SQL命令「更新出租一套dNo = id「 – methuselah 2010-11-17 09:52:15

+1

是的,這是一種在mysql中生成序列的方法;還有其他方法,請參閱http://stackoverflow.com/questions/304461/generate-an-integer-sequence-in-mysql。但是這並不涉及你的問題。 – Unreason 2010-11-17 09:56:44

0

300條記錄的好方法還不是很多,但根據格式,你有你的數據都不可能使用LOAD DATA