2016-04-13 16 views
1

私は以下の表を持っている:テーブルに挿入するときにselect文を使用できますか?

DROP TABLE IF EXISTS `worklist`; 
/*!40101 SET @saved_cs_client  = @@character_set_client */; 
/*!40101 SET character_set_client = utf8 */; 
CREATE TABLE `worklist` (
    `ID` bigint(20) NOT NULL AUTO_INCREMENT, 
    `ENTITY_TYPE_CODE` bigint(20) NOT NULL, 
    `TYPE_CODE` bigint(20) NOT NUll, 
    `NAME` varchar(255) DEFAULT NULL, 
    PRIMARY KEY (`ID`) 
) ENGINE=InnoDB AUTO_INCREMENT=125 DEFAULT CHARSET=utf8; 
/*!40101 SET character_set_client = @saved_cs_client */; 


Insert INTO code (DISPLAY, CODE_GROUP, CODE_KEY, ALIAS) VALUES ('Duplicate Claims Worklist', 'WORKLIST_TYPE', 'DUPLICATE_CLAIM_WORKLIST', 'Duplicate Claims Worklist'); 
INSERT INTO code (DISPLAY, CODE_GROUP, CODE_KEY, ALIAS) VALUES ('Claim', 'ENTITY', 'CLAIM', 'Claim'); 
INSERT INTO worklist (ENTITY_TYPE_CODE, TYPE_CODE) VALUES (SELECT ID FROM code WHERE CODE_GROUP = 'ENTITY' and CODE_KEY = 'CLAIM', SELECT ID from code where CODE_GROUP = 'WORKLIST_TYPE' and CODE_KEY = 'DUPLICATE_CLAIM_WORKLIST'); 
ALTER TABLE workitems ADD WORKITEMS_ID bigint(20) DEFAULT NULL; 
+0

注:何らかの理由で、 StackOverFlowは私にこの投稿を編集できないというエラーを表示しています。理由は分かりません。謝罪します。以下の質問を参照してください。 – Jay266

+0

ここに質問があります: コードの最後の行にエラーが表示されています** "FlywaySqlScriptException:20行目のINSERT INTOワークリスト(ENTITY_TYPE_CODE、TYPE_CODE)VALUES(SELECT ID FROM code WHERE CODE_GROUP = 'ENTITY' CODE_KEY = 'WORKLIST_TYPE'およびCODE_KEY = 'DUPLICATE_CLAIM_WORKLIST'):SQL構文にエラーがあります。 "。** 私はそれが選択ステートメントのためだと仮定しています。これはできませんか?これを行う正しい方法は何でしょうか? – Jay266

+2

これは次のように使うことができます: 't1(col1、col2)select t2からcolX、colYを選択してください。 –

答えて

1

はい、あなたは明らかにあなたが句が選択を制御するために場所を含める必要があります値のキーワードを省略し、この

INSERT INTO code (DISPLAY, CODE_GROUP, CODE_KEY, ALIAS) 
    SELECT DISPLAY, CODE_GROUP, CODE_KEY, ALIAS 
    FROM SomeTable 

のような何かをする必要があることができますそれは基本的にそれです。

EDIT:

それは(コードがテストされていないので、いくつかのspeelingのmistooksを有していてもよく、エディタに直接入力されています。)このようになります

DROP TABLE IF EXISTS `worklist`; 
/*!40101 SET @saved_cs_client  = @@character_set_client */; 
/*!40101 SET character_set_client = utf8 */; 
CREATE TABLE `worklist` (
    `ID` bigint(20) NOT NULL AUTO_INCREMENT, 
    `ENTITY_TYPE_CODE` bigint(20) NOT NULL, 
    `TYPE_CODE` bigint(20) NOT NUll, 
    `NAME` varchar(255) DEFAULT NULL, 
    PRIMARY KEY (`ID`) 
) ENGINE=InnoDB AUTO_INCREMENT=125 DEFAULT CHARSET=utf8; 
/*!40101 SET character_set_client = @saved_cs_client */; 


Insert INTO code (DISPLAY, CODE_GROUP, CODE_KEY, ALIAS) VALUES ('Duplicate Claims Worklist', 'WORKLIST_TYPE', 'DUPLICATE_CLAIM_WORKLIST', 'Duplicate Claims Worklist'); 
INSERT INTO code (DISPLAY, CODE_GROUP, CODE_KEY, ALIAS) VALUES ('Claim', 'ENTITY', 'CLAIM', 'Claim'); 
INSERT INTO worklist (ENTITY_TYPE_CODE, TYPE_CODE) SELECT A.ID, B.ID FROM (SELECT ID, 1 AS J FROM code WHERE CODE_GROUP = 'ENTITY' and CODE_KEY = 'CLAIM') A LEFT JOIN (SELECT ID, 1 AS J FROM code WHERE CODE_GROUP = 'WORKLIST_TYPE' and CODE_KEY = 'DUPLICATE_CLAIM_WORKLIST') B ON A.J = B.J; 
ALTER TABLE workitems ADD WORKITEMS_ID bigint(20) DEFAULT NULL; 
+0

私のコードはどのようなものでしょうか? – Jay266

+0

更新されたバディに回答しました。 –

関連する問題