почему бы не использовать левое соединение и использовать fieldX=3
в качестве условия соединения? если fieldX отличается от 3, sql заполняет поле NULL
select a.field1, a.field2, sub.value
from abc a
left join
(
select value from sub_table
where cat_id = 3
limit 0,1
) sub
on a.fieldX = 3
или, если вы хотите получить все строки для соответствующих значений (я вижу, у вас есть cat_id = 3
и fieldX = 3
, поэтому в основном cat_id = fieldX
), просто используйте простое соединение. нет необходимости использовать сложные, если конструкции. sql был создан для быстрого и эффективного объединения:
select a.field1, a.field2, sub.value
from abc a
left join sub_table sub
on a.fieldX = sub.cat_id
обратите внимание, однако, что второй запрос вернет несколько строк, когда есть больше совпадений между fieldX и cat_id (неуникально cat_id
)