0

クエリを簡略化するために一時テーブルを使用しようとしましたが、エラーメッセージが表示されます。これが私の質問です:

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

助けてくれてありがとう!

4

3 に答える 3

1

mysql では、クエリの前に一時テーブルを作成する必要があります。また、FROM にアウトソーシング 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-08T13:47:54.273 に答える
1

これを試してみてください。

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
于 2012-12-08T13:48:47.150 に答える
0

選択から一時テーブルを作成するには、この構文を使用する必要があります

CREATE TEMPORARY TABLE mytemptable 
SELECT Field1, Field2 
FROM mytable;
于 2012-12-08T15:48:02.160 に答える