2016-04-11 50 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