Чтобы получить желаемый результат, сначала необходимо создать производную таблицу, содержащую желаемые значения ACTOR.id
. UNION ALL работает для небольших наборов данных:
SELECT *
FROM (SELECT 4 AS actor_id
FROM DUAL
UNION ALL
SELECT 5
FROM DUAL
UNION ALL
SELECT 15
FROM DUAL) x
С этим вы можете ВНЕШНЕЕ СОЕДИНИТЬ с фактической таблицей, чтобы получить желаемые результаты:
SELECT x.actor_id,
a.name,
a.description,
a.orderid,
a.type
FROM (SELECT 4 AS actor_id
FROM DUAL
UNION ALL
SELECT 5
FROM DUAL
UNION ALL
SELECT 15
FROM DUAL) x
LEFT JOIN ACTOR a ON a.id = x.actor_id
Если между x
и a
нет совпадения, столбцы a
будут нулевыми. Поэтому, если вы хотите, чтобы orderid был равен нулю, когда нет совпадения для идентификатора 15:
SELECT x.actor_id,
a.name,
a.description,
COALESCE(a.orderid, 0) AS orderid,
a.type
FROM (SELECT 4 AS actor_id
FROM DUAL
UNION ALL
SELECT 5
FROM DUAL
UNION ALL
SELECT 15
FROM DUAL) x
LEFT JOIN ACTOR a ON a.id = x.actor_id