【问题标题】:mysql view errormysql查看错误
【发布时间】:2011-05-27 05:26:02
【问题描述】:

我有一个这样的 sql 查询,它给出了一个语法错误,但我找不到它是什么:

CREATE VIEW 
    vw_hs_hr_wf_main_data AS 
        select mo.wfmod_id, 
            mo.wfmod_name, 
            mo.wfmod_view_name, 
            ty.wftype_code,
            ty.wftype_description, 
            ty.wftype_table_name, 
            ty.wftype_view_name,
            ma.wfmain_id, 
            ma.wfmain_sequence,
            CASE
                WHEN ap.wf_main_app_employee IS NULL
                    THEN ma.wfmain_approving_emp_number
                ELSE ap.wf_main_app_employee
            END  CASE AS wfmain_approving_emp_number,
            ma.wfmain_flow_id,
            ty.wftype_update_field, 
            ty.wftype_assembly,
            ty.wftype_assembly_class, 
            ma.wfmain_previous_id,
            ty.wftype_cancelmain_field, 
            ma.wfmain_application_date,
            ty.wftype_cancelstatus_field, 
            ty.wftype_appmain_field,
            ty.wftype_bulk_app_flg, 
            ty.wftype_sort_field_name
        FROM hs_hr_wf_module mo INNER JOIN hs_hr_wf_type ty
            ON mo.wfmod_id = ty.wfmod_id
        INNER JOIN hs_hr_wf_main ma 
            ON ty.wftype_code = ma.wftype_code
        LEFT JOIN hs_hr_wf_main_app_person ap
            ON ma.wfmain_id = ap.wfmain_id
                AND ma.wfmain_sequence = ap.wfmain_sequence
        WHERE (ma.wfmain_iscomplete_flg = 0);

错误信息:

#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 11 行的“CASE AS wfmain_approving_emp_number, ma.wfmain_flow_id, ty.wftype_update_fiel”附近使用正确的语法

【问题讨论】:

  • 包含特定的错误消息可能会有所帮助。
  • #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 11 行的“CASE AS wfmain_approving_emp_number, ma.wfmain_flow_id, ty.wftype_update_fiel”附近使用正确的语法,这是我的错误

标签: php mysql sql view


【解决方案1】:

您不需要END CASE 来关闭CASE,只需END

END AS wfmain_approving_emp_number,

在您的情况下,更好的选择是拨打COALESCE

COALESCE(ap.wf_main_app_employee, ma.wfmain_approving_emp_number)
AS wfmain_approving_emp_number

【讨论】:

  • 你好,小问题。我可以在检索数据时执行视图我的 wfmain_approving_emp_number 字段数据总是将 3 附加到实际数据的字体示例 emp 编号应该是 8 但它的显示为 38
  • @Roshan:这没有任何意义,您的 SQL 或数据中是否有任何三个?顺便说一句,我用比您的 CASE 语句更简单的选项更新了我的答案。
  • 它是一个 phpmyadmin 错误 mysql 命令行显示正确感谢 distrub 抱歉
  • @Roshan:不用担心。无论如何,您可能想要使用 COALESCE 方法,我认为它比 CASE 更清晰,我更喜欢使用最简单的解决方案(通常将 SQL CASE 放在列表的底部)。
猜你喜欢
  • 1970-01-01
  • 2011-11-10
  • 2018-02-08
  • 2014-07-28
  • 2017-09-03
  • 1970-01-01
  • 2011-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多