2016-04-13 15 views
1

Ben Aşağıdaki tablo:Tabloya eklerken select ifadelerini kullanabilir miyim?

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

Not şöyle görünecektir: nedense StackOverFlow bana bu gönderiyi düzenleyemediğimi söyleyen bir hata veriyor. Emin değilim neden. Özür dilerim. Aşağıdaki soruya bakın. – Jay266

+0

İşte soru şu: Kodun son satırı bana hatalar veriyor ** diyerek "FlywaySqlScriptException: 20 satırında çalıştırılırken hata bildirimi: INSERT INTO çalışma listesi (ENTITY_TYPE_CODE, TYPE_CODE) VALUES (SELECT ID FROM kodu WHERE CODE_GROUP = 'ENTITY' ve CODE_KEY = 'CLAIM', CODE_GROUP = 'WORKLIST_TYPE' ve CODE_KEY = 'DUPLICATE_CLAIM_WORKLIST' kodundan SELECT KIMLIĞI: SQL sözdiziminde bir hata var; ". ** Seçme ifadeleri nedeniyle olduğunu kabul ediyorum . Bunu yapamaz mıyım? Bunu yapmanın doğru yolu ne olurdu? – Jay266

+2

Bunu şöyle kullanabilirsiniz: 't1'e ekle (col1, col2) colX seçin, col2 t2'den –

cevap

1

Evet sen Açıkçası fıkra seçme kontrol etmek nerede dahil etmesi gerekir Değerler anahtar kelimeyi ihmal ve bu

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

gibi bir şey yapmak gerekir yapabilirsiniz deyim ama bu temelde.

DÜZENLEME:

O (. Kod denenmemiş ve bu nedenle bazı speeling mistooks olabilir düzenleyiciye doğrudan yazdığınız edilmiştir)

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

Tam olarak bu benim kodumda nasıl görünürdü? – Jay266

+0

Yanıt güncellendi dostum. –

İlgili konular