我试图使用临时表来简化我的查询,但我得到了一条错误消息。下面是我的问题:
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错误是:
#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谢谢你的帮助!
发布于 2012-12-08 23:48:02
要从select创建临时表,应使用以下语法
CREATE TEMPORARY TABLE mytemptable
SELECT Field1, Field2
FROM mytable;发布于 2012-12-08 21:47:54
在mysql中,您需要在查询之前创建临时表。此外,您不需要在表单中选择外包O,学生S,因为您不是从它们中进行选择:
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)发布于 2012-12-08 21:48:47
试一试,
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.idhttps://stackoverflow.com/questions/13777935
复制相似问题