2016-04-11 22 views
1

我试图运行此查询,但我不断收到C.id附近无法识别的数据类型。 我在做什么错?在MySQL存储过程中无法识别的数据类型错误

CREATE PROCEDURE `proc` 
BEGIN 
CREATE TABLE 
    temp_table 
AS (
    SELECT UNIQUE(C.id) FROM table1AS C 
       INNER JOIN table2 AS CA ON CA.college_id in (8192) 
       INNER JOIN table3 AS CS ON CS.skill_id in (2744) 
) 

select * from temp_table 

END 

谢谢。

回答

1
CREATE PROCEDURE `proc`() 
BEGIN 
     drop temporary table if exists temp_table; 
     CREATE temporary TABLE temp_table 
     AS (
      SELECT distinct(C.id) FROM table1 AS C 
      INNER JOIN table2 AS CA ON CA.college_id in (8192) 
      INNER JOIN table3 AS CS ON CS.skill_id in (2744) 
     ); 

     select * from temp_table; 

END 
+0

nope。不改变任何东西。 – Kanishka

+0

你是缺少括号的程序名称....我已更新看看这个 –

+0

是的。就是这样。非常感谢。 :) – Kanishka

0

尝试使用DISTINCT。在MYSQL中没有什么像UNIQUE关键字。试试这个:

CREATE PROCEDURE `proc`() 
BEGIN 
CREATE TABLE 
    temp_table 
AS (
    SELECT DISTINCT(C.id) FROM table1 AS C 
       INNER JOIN table2 AS CA ON CA.college_id in (8192) 
       INNER JOIN table3 AS CS ON CS.skill_id in (2744) 
); 

select * from temp_table; 

END 
+0

仍然得到相同的错误 – Kanishka

+0

得到另一个错误,说逗号或(缺少近DISTINCT – Kanishka

+0

@ kanishka: - 它看起来像你没有正确地为你的表加入。我编辑了我的答案并试图加入你的表格。您可以使用适当的列加入它们。尝试一下 –

0

首先,你需要使用DISTINCT而不是UNIQUE因为独特的是没有更多的MySQL和第二个缺少空间table1AS如此修改table1 AS和第三个你缺少()存储过程的名称和最后;是选择查询之前缺少,

所以修改后的查询将是:

CREATE PROCEDURE `proc`() 
BEGIN 
CREATE TABLE 
    temp_table 
AS (
    SELECT DISTINCT(C.id) FROM table1 AS C 
       INNER JOIN table2 AS CA ON CA.college_id in (8192) 
       INNER JOIN table3 AS CS ON CS.skill_id in (2744) 
); 

select * from temp_table; 

END