我有一些表:devices
,acccessories
和repairs
。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 - mysql:如果列具有值,请在某些表上进行左联接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58966617/