12

158列と22,000行のテーブルがあり、ユーザーからのWHERE条件に基づいて動的に値を挿入する別の空のテーブルがあります。SELECTクエリは次のようになります。

SELECT * FROM mygrist_tables WHERE suic_att> = 5 AND sex ='M'

これにより、約9,000レコードが返されます(たとえば)。これらのレコードを別のテーブル(このフィルター処理されたデータのみ)に挿入したいと思います。出来ますか?INSERTクエリがどのように表示されるか、158個の列すべてを含む別のテーブルを作成する必要があるかどうか、またはINSERTクエリで158個の列すべてを動的に作成できるかどうかを誰かに教えてもらえますか?また、ビューを使用してこれを行うことはできますか、それともテーブルが不可欠ですか?前もって感謝します!

4

2 に答える 2

24

SELECT上記のステートメントとINSERT結果を、存在しない新しいテーブルに実行したいようです。もしそうなら、これはうまくいくはずです:

SELECT * INTO YourNewTable
FROM mygrist_tables 
WHERE suic_att>=5 AND gender='M'

YourNewTableがすでに存在していると仮定すると、INSERTINTOを実行する必要があります。

INSERT INTO YourNewTable 
SELECT * 
FROM mygrist_tables 
WHERE suic_att>=5 AND gender='M'

オプションで、同じではない列を指定する必要がある場合があります。

編集-コメントを読み直し、DBがMySQLであることを認識します。SQLステートメントから新しいテーブルを作成するには、次を使用する必要があります。

CREATE TABLE YourNewTable
SELECT *
FROM mygrist_tables 
WHERE suic_att>=5 AND gender='M';

http://dev.mysql.com/doc/refman/5.0/en/create-table.html

于 2013-03-27T00:20:26.380 に答える
5

SELECTINTO構文を使用できます

SELECT * 
INTO MyNewTable
FROM mygrist_tables WHERE suic_att>=5 AND gender='M'

ただし、そのように既に存在するテーブルに挿入することはできません。テーブルがすでに存在する場合は、

INSERT INTO MyOldTable
([LIST OUT YOUR COLUMNS HERE])
SELECT [LIST OUT YOUR COLUMNS HERE] 
FROM mygrist_tables WHERE suic_att>=5 AND gender='M'
于 2013-03-27T00:21:00.783 に答える