首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SQL中正确使用临时表

如何在SQL中正确使用临时表
EN

Stack Overflow用户
提问于 2012-12-08 21:32:38
回答 3查看 85关注 0票数 0

我试图使用临时表来简化我的查询,但我得到了一条错误消息。下面是我的问题:

代码语言:javascript
复制
SELECT E.ID, E.name
INTO #TmpEmplyee
FROM Employee E, Outsourcing O, Student S
WHERE E.ID NOT IN (SELECT ID FROM Student UNION SELECT ID FROM Outsourcing)

SELECT R.name, I.startDate, T.name
FROM Role R, Inn I, #TmpEmplyee T
WHERE I.name = R.name AND I.ID = T.id

错误是:

代码语言:javascript
复制
#1064 - 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 'FROM Employee E, Outsourcing O, Student S WHERE E.ID NOT IN (SELECT ID FROM Stud' at line 3

谢谢你的帮助!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-08 23:48:02

要从select创建临时表,应使用以下语法

代码语言:javascript
复制
CREATE TEMPORARY TABLE mytemptable 
SELECT Field1, Field2 
FROM mytable;
票数 0
EN

Stack Overflow用户

发布于 2012-12-08 21:47:54

在mysql中,您需要在查询之前创建临时表。此外,您不需要在表单中选择外包O,学生S,因为您不是从它们中进行选择:

代码语言:javascript
复制
INSERT INTO #TmpEmplyee
SELECT E.ID, E.name
FROM Employee E
WHERE E.ID NOT IN (SELECT ID FROM Student UNION SELECT ID FROM Outsourcing)
票数 1
EN

Stack Overflow用户

发布于 2012-12-08 21:48:47

试一试,

代码语言:javascript
复制
SELECT R.name, I.startDate, T.name
FROM    Role R 
        INNER JOIN Inn I
            ON I.name = R.name
        INNER JOIN
        (
            SELECT E.ID, E.name
            -- remember that the join below produces CROSS JOIN
            FROM Employee E, Outsourcing O, Student S
            WHERE E.ID NOT IN ( SELECT ID FROM Student 
                                UNION 
                                SELECT ID FROM Outsourcing)
        ) T ON I.ID = T.id
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13777935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档