2017-05-12 115 views
-3

我无法找出此SQL语句中的任何错误。任何人都可以请帮助我哪里是错误,我该如何解决这个问题?预先感谢并对拼写或语法错误感到抱歉。MYSQL SQL语法错误如何解决?

SQL:

SELECT count(*) as `total` FROM `pet_info` LEFT JOIN `lostpets` ON `lostpets`.`petid` = `pet_info`.`id` WHERE `lostpets`.`reunited`='No' AND (CASE WHEN `pet_info`.`pet_aggg` = 'birth' THEN `pet_info`.`pet_birthdate` <= '2011-05-12' WHEN `pet_info`.`pet_aggg` = 'age' THEN `pet_info`.`pet_age` >= '7'); 
+2

你得到的错误是什么? – Jer

回答

1

这是您的查询:

SELECT count(*) as `total` 
FROM `pet_info` LEFT JOIN 
    `lostpets` 
     ON `lostpets`.`petid` = `pet_info`.`id` 
WHERE `lostpets`.`reunited`='No' AND 
     (CASE WHEN `pet_info`.`pet_aggg` = 'birth' 
      THEN `pet_info`.`pet_birthdate` <= '2011-05-12' 
      WHEN `pet_info`.`pet_aggg` = 'age' 
      THEN `pet_info`.`pet_age` >= '7' 
    ); 

明显的语法问题是缺乏END。但是你还有其他问题。查询也许应该是这样的:

SELECT count(*) as `total` 
FROM `pet_info` pi JOIN 
    `lostpets` l 
     ON l.`petid` = pi.`id` 
WHERE l.`reunited`= 'No' AND 
     ((pi.pet_aggg = 'birth' AND pi.pet_birthdate <= '2011-05-12') OR 
     (pi.pet_aggg = 'age' AND pi.pet_age >= 7) 
    ); 

注:

  • WHERE子句将在LEFT JOININNER JOIN
  • 不要在数值周围使用单引号。
  • CASEWHERE条款中容易混淆。只需使用基本的布尔逻辑。
1

只需添加 '端' 到你选择的结尾:THEN pet_infopet_age> ='7'end);