mysql语法错误

| 我有以下查询:
select irc.*,p.*,@product :=\'prod_product\',@accessrole :=\'pub_accessrole\' 
from item_rel_coupon irc 
join user_rel_coupon urc on urc.userId = 7 and irc.couponId=urc.couponId 
left join if(irc.source=\'product\',@product,@accessrole) as p on p.id=irc.itemId
但是我收到语法错误。为什么?
已邀请:
Nanne是正确的,您的IF()不是表。有两种解决方法: 您加入两个表,然后将 如果您选择要选择的 您想要的表中的列。 (推荐的) 您使用IF创建查询 在字符串中,您准备字符串 并执行手柄。 (不 推荐的)
这部分给出了一个错误:1
left join if(irc.source=\'product\',@product,@accessrole) as p on p.id=irc.itemId
我在加入JOIN之后需要一个表引用,但是我认为您的
if
\的结果不是一个。 1:错误: #1064-您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册以获取正确的语法,以便在\'if(irc.source = \'product \',@ product,@ accessrole)附近使用p.id = irc.itemId LIMIT 0上的p, \'在第1行
我认为我从未见过将IF()用作查询中的表引用,特别是如果IRC源可以在不同源之间切换的情况下……我将更改为...
select 
      irc.*,
      if( p1.id = irc.itemid, p1.fld1, p2.fld1 ) as Fld1,
      if( p1.id = irc.itemid, p1.fld2, p2.fld2 ) as Fld2,
      if( p1.id = irc.itemid, p1.fld3, p2.fld3 ) as Fld3,
      if( p1.id = irc.itemid, p1.fld4, p2.fld4 ) as Fld4
   from 
      item_rel_coupon irc 
         join user_rel_coupon urc 
            on urc.userId = 7 
            and irc.couponId=urc.couponId 
         left join prod_product p1
            on p1.id = irc.itemid
         left join pub_accessrole p2
            on p2.id = irc.itemid

要回复问题请先登录注册