在SELECT mysql中使用IF和JOIN获取错误
我不熟悉mysql查询中的IF语句。我跟着写我自己的查询 基本上,我试图选择数据,如果在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
基表“外围设备”
中有一个属性,那么将基表与外围设备表联接,否则将基表与其他表联接
以下是我尝试构建的查询:
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
方法解决了这个问题!