2012-01-16 89 views
0

我被困在MySQL语法错误中,我真的不知道错误在哪里。我执行一个相当庞大的SELECT语句包含几个不同的select_expr子查询:在IF语句中MySQL SELECT sytax错误

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 

这里有什么问题?

回答

3

(无关):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 
     ) 
     )