我是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)
答案 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和/或基于集合的操作的基础知识。如果你考虑逻辑,你会发现你的查询毫无意义;对于某些行,需要连接一个表,对于其他记录,不同的表,这不起作用。