1

既存のテーブル (従業員) からemp_department_14 つの列 ( ) を一時テーブル ( ) に入力しようとしています。従業員テーブルからのfname, minit, lname, bdate場所。dno=1助言がありますか?

mysql> select * from employee;
+----------+-------+---------+-----------+------------+--------------------------+------+--------+-----------+-----+
| Fname    | Minit | Lname   | SSN       | Bdate      | Address                  | Sex  | Salary | Superssn  | Dno |
+----------+-------+---------+-----------+------------+--------------------------+------+--------+-----------+-----+
| John     | B     | Smith   | 123456789 | 1955-01-09 | 731 Fondren, Cary, NC    | M    |  31500 | 333445555 |   5 |
| Franklin | T     | Wong    | 333445555 | 1945-12-08 | 638 Voss, Cary, NC       | M    |  42000 | 888665555 |   5 |
| Alicia   | J     | Zelaya  | 999887777 | 1958-07-19 | 3321 Castle, Apex, NC    | F    |  25000 | 987654321 |   4 |
| Jennifer | S     | Wallace | 987654321 | 1931-06-20 | 291 Berry, Garner, NC    | F    |  43000 | 888665555 |   4 |
| Rameish  | K     | Naraya  | 666884444 | 1952-09-15 | 975 Fire Oak, Angier, NC | M    |  39900 | 333445555 |   5 |
| Joyce    | A     | English | 453453453 | 1962-07-31 | 5631 Rice, Raleigh, NC   | F    |  26250 | 333445555 |   5 |
| Ahmad    | V     | Jabbar  | 987987987 | 1959-03-29 | 980 Dallas, Cary, NC     | M    |  25000 | 987654321 |   4 |
| James    | E     | Borg    | 888665555 | 1927-11-10 | 450 Stone, Cary, NC      | M    |  55000 | NULL      |   1 |
+----------+-------+---------+-----------+------------+--------------------------+------+--------+-----------+-----+

James E Borg だけが dno=1 です。

4

1 に答える 1

0

必要なのは簡単なINSERT INTO ... SELECT...FROMステートメントだけです。の列の順序がの順序と正確に一致しない()と仮定して、の列をリストすることをお勧めします。emp_department_1SELECT

INSERT INTO emp_department_1 (fname, minit, lname, bdate)
  SELECT fname, minit, lname, bdate FROM employee WHERE dno = 1

構文については、MySQL 構文リファレンスを確認してくださいINSERT...SELECT

アップデート

これはまだ作成されていない一時テーブルであるため、次のCREATE TEMPORARY TABLE ... SELECT構文を使用します。

CREATE TEMPORARY TABLE emp_department_1
   SELECT fname, minit, lname, bdate FROM employee WHERE dno = 1

一時テーブルで列の型を定義する必要はありませんが、必要に応じて定義したり、必要に応じてインデックスを作成したりできます。

CREATE TEMPORARY TABLE emp_department_1 (
  fname VARCHAR(64) NOT NULL,
  minit VARCHAR(64) NULL,
  lname VARCHAR(64) NOT NULL,
  bdate DATE NOT NULL,
  PRIMARY KEY (fname, lname, bdate) /* not that you would actually do this */
) SELECT fname, minit, lname, bdate FROM employee WHERE dno = 1
于 2012-11-30T01:44:17.440 に答える