Необходимо в приложении заложить правильную логику, либо обработку количества записей, либо с эксепшн.
а по вопросу -
FULL OUTER JOIN-- выбираем несуществующую запись
SELECT pt.pid, t.id, t.text FROM (SELECT 1 AS pid) pt
FULL OUTER JOIN (
SELECT 1 AS pid, tt.*
FROM tbl tt
-- условие запроса:
WHERE tt.id = 10
) AS t ON pt.pid = t.pid
;
см. пример на
dbfiddle
так же и
LEFT OUTER JOIN, но
условие по запросу
ставить внутрь скобок
( ) в подзапрос, см
dbfiddle:
-- выбираем несуществующую запись
SELECT pt.pid, t.id, t.text FROM (SELECT 1 AS pid) pt
LEFT OUTER JOIN (
SELECT 1 AS pid, tt.*
FROM tbl tt
-- условие запроса:
WHERE tt.id = 10
) AS t ON pt.pid = t.pid
;
можно еще UNION подзапроса с NULL , но он всегда будет вставляться.
SELECT id, text FROM tbl
WHERE id = 10
UNION
SELECT NULL, NULL
;
пример там же, выше.