【问题标题】:MySQL SELECT sytax error inside IF statementIF语句中的MySQL SELECT语法错误
【发布时间】:2012-01-16 15:45:34
【问题描述】:

我遇到了 MySQL 语法错误,我真的不知道错误在哪里。我正在执行一个相当大的 SELECT 语句,其中包含几个不同的 select_expr 子选择:

SELECT
`a`.`id` AS `id`,
`a`.`name` AS `name`,

/* ... */

IF(((SELECT COUNT(*) FROM `position` WHERE (`auftrag_id` = `a`.`id`) AND (`status` < 100)) = 0 ), ( To_days(SELECT `enddatum` FROM `position` WHERE (`auftrag_id` = `a`.`id`) ORDER BY `enddatum` DESC LIMIT 1) - To_days(`a`.`datum`) ), NULL) AS `days`,

/* ... */

FROM
`auftrag` `a`

导致错误的select_expr 是中间的 IF 语句,整个语句的其余部分运行良好。错误输出为:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT `enddatum` FROM `position` WHERE (`auftrag_id` = `a`.`id`) ORDER B' at line 50 

这里有什么问题?

【问题讨论】:

    标签: mysql select syntax if-statement syntax-error


    【解决方案1】:

    (无关):您拥有的IF 不是语句,而是函数。


    放入SELECT 子查询:

    To_days( SELECT `enddatum` 
             FROM `position` 
             WHERE (`auftrag_id` = `a`.`id`) 
             ORDER BY `enddatum` DESC 
             LIMIT 1
           )
    

    括号之间:

    To_days( ( SELECT `enddatum` 
               FROM `position` 
               WHERE (`auftrag_id` = `a`.`id`) 
               ORDER BY `enddatum` DESC 
               LIMIT 1
             )
           )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-20
      • 1970-01-01
      • 1970-01-01
      • 2011-02-08
      • 1970-01-01
      • 2021-03-13
      • 1970-01-01
      • 2015-01-21
      相关资源
      最近更新 更多