2016-04-11 13 views
1

このクエリを実行しようとしていますが、Cidの近くで認識できないデータ型を取得し続けています。 私は何が間違っていますか?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というキーワードはありません。これを試してください:UNIQUEはもうMySQLである2つ目はとてもtable1 AS変更と三番目はあなたが店のプロシージャの名前に()が欠落しているスペースtable1ASが不足しているため、

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の近くにありません: - あなたのテーブルに正しくJOINしていないようです。私は自分の答えを編集し、あなたのテーブルに参加しようとしました。適切な列を使用してJOINすることができます。試してください –

0

まずあなたがUNIQUEの代わりにDISTINCTを使用する必要がありません最後;が選択クエリの前に不足していると、

ので修正クエリは次のようになります。

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 
関連する問題