2014-01-17 25 views
0

我想插入一個值的表中插入所有值的父值是來自同一個表「master」一些條目。問題與子查詢在同一個表中插入一個值

我用別名subquesry上INSERT INTO with SubQuery MySQL

INSERT INTO mdl_question_categories (NAME, stamp, parent, info) 
SELECT 
    'cat100' AS NAME, 
    'localhost+140117065545+AUXF' AS stamp, 
    id 
FROM 
    mdl_question_categories 
WHERE NAME = 'master', 
    'desc' AS info ; 

此代碼拋出

Error: 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 ''desc' as info' at line 1 SQLState: 42000 ErrorCode: 1064

然後,我改變了查詢

INSERT INTO mdl_question_categories (NAME, stamp, info, parent) 
SELECT 
    'cat100' AS NAME, 
    'localhost+140117065545+AUXF' AS stamp, 
    'desc' AS info, 
    id 
FROM 
    mdl_question_categories 
WHERE NAME = 'master' ; 

此作品錯誤的建議優秀。

現在的問題是爲什麼會發生這種情況?

是否有任何限制,我們應該始終保持查詢部分結束時的值採摘sql部分id from mdl_question_categories where name='master'

+5

現在的問題是 - 你想從'AS'(別名)在WHERE條款? –

+0

@Strawberry無關緊要,就是上面查詢時的字符串文字(用引號括起來) –

+0

Ahaaaa !!!! @AlmaDo您指出了一件非常重要的事情,我忽略了+1。 – veer7

回答

4

你插入4個值:name,stamp,info, parent

在你的舊的查詢,你選擇3個值'cat100' as name,'localhost+140117065545+AUXF' as stamp, id。儘管'desc' AS info最後被認爲是WHERE子句的一部分(而不是SELECT的一部分),因此產生錯誤。

然而,在新的查詢您正確選擇4個值(其中插入匹配):'cat100' AS NAME, 'localhost+140117065545+AUXF' AS stamp, 'desc' AS info, id

+1

不,在第一個查詢中,該操作選擇4。 'SELECT 'cat100' AS NAME, '本地主機+ 140117065545 + AUXF' AS郵票, ID FROM mdl_question_categories WHERE NAME = '主', '降序' AS信息;'。實際的錯誤是OP錯過了列別名,或者他/她應該圍繞着() –

+0

@ ling.s你是對的,謝謝你的指針。 –

1

這裏我修改查詢

insert into mdl_question_categories (name,stamp,parent,info) 
select 'cat100' as name, 
'localhost+140117065545+AUXF' as stamp, 
id from mdl_question_categories 
where name in('master','desc') 

B'coz如果你給像where條件它不會工作。

+0

不,我不是指''('master','desc')中的名字。 'info'值是插入查詢中的'desc' – veer7

1

你需要把所有的值放在select行。您似乎在查詢後移動了一個值。試試這個:

INSERT INTO mdl_question_categories (NAME, stamp, parent, info) 
    SELECT 'cat100' AS NAME, 'localhost+140117065545+AUXF' AS stamp, id , 'desc' AS info 
    FROM 
     mdl_question_categories 
    WHERE NAME = 'master' 
相關問題