2011-04-19 62 views
0

我有以下查詢: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 

但我得到一個語法錯誤。爲什麼?

+1

MySQL給你的確切錯誤是什麼?應該幫助查明哪一位錯誤 – fin1te 2011-04-19 12:01:01

回答

0

Nanne是對的,你的IF()不是表格。有兩種方法解決方法:

  1. 你在兩個表連接,並把 如果您的選擇來選擇你想要的表 列。 (推薦)
  2. 您使用IF在字符串中創建查詢 ,您準備字符串 並EXECUTE句柄。 (不推薦 )
0

這部分給出了一個錯誤:我以後

left join if(irc.source='product',@product,@accessrole) as p on p.id=irc.itemId 

一個連接你需要一個表引用,我不認爲你的if的結果之一。

:錯誤: #1064 - 您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在'if(irc.source ='product',@ product,@ accessrole)'旁邊使用正確的語法作爲p.id = irc.itemId LIMIT 0' 1

0

我不認爲我見過的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