在SELECT mysql中使用IF和JOIN获取错误

在SELECT mysql中使用IF和JOIN获取错误,mysql,database,if-statement,select,join,Mysql,Database,If Statement,Select,Join,我不熟悉mysql查询中的IF语句。我跟着写我自己的查询 基本上,我试图选择数据,如果基表“外围设备”中有一个属性,那么将基表与外围设备表联接,否则将基表与其他表联接 以下是我尝试构建的查询: SELECT * FROM CC_FIRMWARE INNER JOIN IF(CC_FIRMWARE.Device_Class = "Peripheral", RC_Peripheral_Type ON RC_Peripheral_Type.Id = CC_FIRMWARE.Devic

我不熟悉mysql查询中的IF语句。我跟着写我自己的查询

基本上,我试图选择数据,如果
基表“外围设备”
中有一个属性,那么将基表与外围设备表联接,否则将基表与其他表联接

以下是我尝试构建的查询:

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;

我得到语法错误<代码>意外的“如果”(IF)

我想你想要这样的东西:

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
选择*
从CC_固件
左连接RC_外围_类型
在RC_外围设备_Type.Id=CC_固件.Device_Type_Id上
和CC_FIRMWARE.Device_Class=“Peripheral”
左连接钢筋混凝土箱类型
在RC_-Box_-Type.Id=CC_-FIRMWARE.Device_-Type_-Id上
和CC_固件。设备_类“外围设备”
其中CC_FIRMWARE.Id=4

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

如果是用于选择字段而不是用于表,谢谢☺ 您是对的,当从其他表获取行时,这将不起作用,我也需要获取它们。我用
UNION
方法解决了这个问题!