在SELECT mysql中使用带有JOIN的IF获取错误

时间:2015-11-02 07:54:41

标签: mysql database if-statement select join

我是mysql查询中IF语句的新手。我按照this answer编写自己的查询。

基本上我想在Base table "Peripheral" 然后 中的属性与外围表连接基表时选择数据,其他 < em>将基表与其他表连接。

以下我尝试构建的查询:

SELECT * FROM CC_FIRMWARE 

INNER JOIN 

IF(CC_FIRMWARE.Device_Class = "Peripheral", 
    RC_Peripheral_Type ON RC_Peripheral_Type.Id = CC_FIRMWARE.Device_Type_Id, 
    RC_Box_Type ON RC_Box_Type.Id = CC_FIRMWARE.Device_Type_Id)

WHERE CC_FIRMWAER.Id = 4;

我收到语法错误。 unexpected 'IF' (if)

1 个答案:

答案 0 :(得分:0)

我想你想要这样的东西:

SELECT         *
FROM           CC_FIRMWARE
LEFT JOIN      RC_Peripheral_Type 
          ON   RC_Peripheral_Type.Id = CC_FIRMWARE.Device_Type_Id
          AND  CC_FIRMWARE.Device_Class = "Peripheral"
LEFT JOIN      RC_Box_Type 
          ON   RC_Box_Type.Id = CC_FIRMWARE.Device_Type_Id
          AND  CC_FIRMWARE.Device_Class <> "Peripheral"
WHERE          CC_FIRMWARE.Id = 4

这是非常基本的东西,我认为你应该阅读SQL和/或基于集合的操作的基础知识。如果你考虑逻辑,你会发现你的查询毫无意义;对于某些行,需要连接一个表,对于其他记录,不同的表,这不起作用。