字段列表中的列“lang_id”不明确

时间:2018-06-19 06:56:49

标签: mysql stored-procedures

我得到了

  

字段列表中的列'lang_id'不明确

错误。我无法修复它?这是我的程序。

BEGIN
    SET @sql = NULL;
    SELECT GROUP_CONCAT
            (DISTINCT
                     CONCAT
                           (
                            'MAX(IF(lang_id = ''',
                             lang_id,
                             ''', meta_value, NULL)) AS ',
                             Concat('lang_', lang_id)
                            )
            ) INTO @sql
       FROM (
             SELECT ml.meta_value, l.lang_id 
               From ali_langs as l 
          LEFT JOIN  ali_langmeta as ml 
                 On ml.lang_id=l.lang_id) as tt;

                SET @sql = CONCAT
                               ('SELECT meta_key, ', @sql, ' 
                                   FROM ali_langmeta 
                              LEFT JOIN  ali_langs 
                                     On ali_langmeta.lang_id=ali_langs.lang_id                  
                               GROUP BY meta_key'
                               );
    PREPARE stmt 
       FROM @sql;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
    END

这是我的SQLfiddle链接 http://www.sqlfiddle.com/#!9/5d82a4/3

1 个答案:

答案 0 :(得分:2)

无论您使用列lang_id,都需要指定表格,例如。 l.lang_id