我有几个表:设备
、配件
和维修
。
Repairs
中有一个名为:item_type
的字段和一个名为 ref_id
item_type
的值可以为“1”(表示它是设备)或“2”(表示它是配件)。
如果repairs.item_type = 1
我想在repairs.ref_id = devices.id
的表上进行联接。
如果repairs.item_type = 2
我想在该表上进行连接,其中repairs.ref_id = acccessories.id
。
我不知道该怎么做。
SELECT *
FROM repairs
LEFT JOIN repairs.ref_id = (if repairs.item_type = 1 then devices.id; if repairs.item_type = 2 then accessories.id)
有没有办法做到这一点,或者我是否需要执行UNION ALL
,例如:
SELECT *
FROM repairs
LEFT JOIN repairs.ref_id = devices.id
WHERE repairs.item_id = '1'
UNION ALL
SELECT *
FROM repairs
LEFT JOIN repairs.ref_id = accessories.id
WHERE repairs.item_id = '2'
最佳答案
将devices
和accessories
表加入到repair
表中。
select t1.*
from repairs t1
left join devices t2 on t2.id = t1.ref_id
left join accessories t3 on t3.id = t1.ref_id
and t1.item_type in (1, 2)
关于mysql:如果列有值,则在某个表上进行左连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58966617/