2012-03-17 15 views
9

私はmysqlで連続した数字の大きなテーブルを生成しようとしています。私はちょうど2列が欲しいです。主キー、および0〜Xの範囲の数値列です(Xは非常に大きい)。約64,000行で処理する必要があります。ノー成功し、このコードを試みた:mysqlで "Numbers Table"を作成する

CREATE TABLE numbers (
    number   INT   NOT NULL 
    CONSTRAINT XPKnumbers 
     PRIMARY KEY CLUSTERED (number) 
    ) 

INSERT INTO numbers (number) VALUES (0) 

DECLARE @i   INT 
SET @i = 20 

WHILE 0 < @i 
    BEGIN 
     INSERT INTO numbers (number) 
     SELECT number + (SELECT 1 + Max(number) FROM numbers) 
      FROM numbers 

     SET @i = @i - 1 
    END 

SELECT * FROM numbers 

をし、私はこのエラーを取得する:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CONSTRAINT XPKnumbers PRIMARY KEY CLUSTERED (number)) INSERT INTO n' at line 3

誰もが、この作品を作るために何か提案がありますか?

+0

を挿入 'の「値」部分を追加します。テーブル(列)値(値) –

答えて

18

あなたは、セミコロン、カンマ、さらには構文を修正した後、すべてのテーブルから最大を選択するために、まだ良いアイデアではありませんが欠落していますもう1つの行をループに挿入するだけの時間です。 http://use-the-index-luke.com/blog/2011-07-30/mysql-row-generatorから

ドロップし、使用ジェネレーター:

CREATE OR REPLACE VIEW generator_16 
AS SELECT 0 n UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL 
    SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL 
    SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL 
    SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL 
    SELECT 12 UNION ALL SELECT 13 UNION ALL SELECT 14 UNION ALL 
    SELECT 15; 

CREATE OR REPLACE VIEW generator_256 
AS SELECT ((hi.n << 4) | lo.n) AS n 
    FROM generator_16 lo, generator_16 hi; 

CREATE OR REPLACE VIEW generator_4k 
AS SELECT ((hi.n << 8) | lo.n) AS n 
    FROM generator_256 lo, generator_16 hi; 

CREATE OR REPLACE VIEW generator_64k 
AS SELECT ((hi.n << 8) | lo.n) AS n 
    FROM generator_256 lo, generator_256 hi; 

CREATE OR REPLACE VIEW generator_1m 
AS SELECT ((hi.n << 16) | lo.n) AS n 
    FROM generator_64k lo, generator_16 hi; 

そして、何らかの理由であなたが本当に数字のテーブルが必要な場合にだけ実行します。

INSERT INTO numbers(number) 
SELECT n FROM generator_64k WHERE n < 64000 
+0

うわー、今私が探していたものです。私はまだコードを理解していないが、それは動作するようになる。本当にありがとう! – user1262890

+0

これは私を夢中にしています。このコードは私が必要とするものです。それはphpmyadminとnavicatで動作しますが、DreamweaverのSQLエディタにインポートすると、mysqlエラーが発生していることがわかります。 (エラーにもかかわらず)クエリのコードを残して、Webページをテストしようとすると、ページは次のように戻ります。 SQL構文にエラーがあります。 CREATE OR REPLACE VIEWジェネレータ_256 AS SELECT((hi.n << 4)| lo.n)1行目のAS n ' 私は何ですか私はあなたのMySQLサーバーバージョンに対応するマニュアルを確認してください。間違っている? – user1262890

+0

そして、私がphpmyadminの数値表に行を挿入するためにクエリを実行しようとしたとき、コメント欄にすべてのコードを収めることができませんでした。 #1064 - SQL構文にエラーがあります; CREATE OR REPLACE VIEWジェネレータ_256 AS SELECT(hi.n < < 4)| lo.n)AS n 'on line 9 – user1262890

0

あなたは、列と制約宣言の間にカンマが欠落している:

CREATE TABLE numbers (
    number   INT   NOT NULL, 
    CONSTRAINT XPKnumbers 
     PRIMARY KEY CLUSTERED (number) 
    ) 
関連する問題