2016-08-02 106 views
1

为了在表格('projects')中插入唯一的'project_title'值,我写了一个如下所示的查询。Mysql重复错误

INSERT INTO projects (projects.project_title, projects.description) 
SELECT * FROM (SELECT 'a title', 'a description') AS tmp 
WHERE NOT EXISTS (SELECT projects.project_title FROM projects WHERE projects.project_title = 'a title') LIMIT 1 

,直到进入两个项目名称和项目说明同一条目和查询会是这样也能正常工作:

INSERT INTO projects (projects.project_title, projects.description) 
SELECT * FROM (SELECT 'text', 'text') AS tmp 
WHERE NOT EXISTS (SELECT projects.project_title FROM projects WHERE projects.project_title = 'text') LIMIT 1 

现在,我得到这个错误:

[Err] 1060 - Duplicate column name 'text' 

如何摆脱这种重复错误?

+2

尝试给别名列'... SELECT * FROM(SELECT '文本' AS使用firstText, '文本' AS secondText )AS tmp ....' – 1000111

+0

谢谢,它解决了! – Mosi

+1

@ 1000111让它成为答案! \ O / – Jakumi

回答

1

提取的错误在这里的讲话:

SELECT 
tmp.* 
FROM 
(
    SELECT 'text', 'text' 
) AS tmp; 

这个查询会产生这个错误

[Err] 1060 - Duplicate column name 'text'

因为你没有给任何别名列。

解决方案:

给别名列:

SELECT 
    tmp.* 
FROM 
(
    SELECT 
     'text' AS firstText, 
     'text' AS secondText 
) AS tmp;