MySQL Join Query中的语法错误

时间:2014-04-24 22:28:57

标签: mysql sql

我在MySQL查询中遇到语法错误。 MySQL和SQL服务器的工作方式不同吗?任何人都可以建议,出了什么问题,在哪里?

select b.component, d.matter, d.bug, d.timestamp,  d.os 
from bugs.profiles p, ops_reports.BPR_TAG_DATA d
left join (Select * from bugs where product='test') b 
on d.bug=b.bug_id
where d.tagid = 6
and timestamp between "2014-04-21" and "2014-04-24"
and login_name like 'test'
and p.userid = d.user

错误消息 24/04/2014 23:14:10 0:00:00.037 MySQL数据库错误:您的SQL语法出错。查看与您的MySQL服务器版本相对应的手册,以获得正确的语法,以便使用'选择*来自bugs,其中product ='转换')为b on(d.bu 1 0

1 个答案:

答案 0 :(得分:2)

您不应混合使用隐式和显式联接。一个简单的规则:不要在from子句中使用逗号。

select b.component, d.matter, d.bug, d.timestamp, d.os 
from ops_reports.BPR_TAG_DATA d left join
     bugs b
     on b.product = 'test' and d.bug = b.bug_id left join
     bugs.profiles p
     on p.userid = d.user
where d.tagid = 6 and
      timestamp between '2014-04-21' and '2014-04-24' and
      login_name like 'test';

我还删除了子查询,将条件移动到on子句。这使查询更有效。并将日期常量的分隔符更改为单引号。对字符串使用双引号会导致混淆。

编辑:

所有这些都说,问题中的查询看起来像,就像它在语法上是正确的一样。我注意到错误消息没有引用这个确切的查询。该查询包含product='test') b,错误消息为product='Conversions') as b。也许还有其他差异。