Предположим, у вас есть следующий запрос. Если вложенный запрос возвращает NULL
(0 результатов), хранимая процедура завершается с ошибкой, упомянутой ниже. Я обнаружил, что могу переписать код в альтернативном запросе ниже, но я хочу найти более простой синтаксис для его написания. У меня их около 10, а у некоторых есть несколько вложенных запросов. Есть ли более простой способ написать их? Я не специалист по SQL, поэтому я всегда ищу предложения! Благодаря.
Запрос (который иногда падает):
SET @sampleid = (
SELECT
[sampleid]
FROM [sample]
WHERE [identifyingnumber] = @sample_identifyingnumber
Ошибка в запросе:
Subquery returned more than 1 value. This is not permitted when the subquery
follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
Альтернативный запрос, который никогда не падает:
IF
(
SELECT
COUNT([sampleid])
FROM [sample]
WHERE [identifyingnumber] = @sample_identifyingnumber
) = 0
BEGIN
SET @sampleid = NULL
END
ELSE
BEGIN
SET @sampleid =
(
SELECT
DISTINCT [sampleid]
FROM [sample]
WHERE [identifyingnumber] = @sample_identifyingnumber
)
END
===============
Более сложный пример:
SET @testcodeid = (
SELECT
[testcodeid]
FROM [testcode]
WHERE [testcode].[name] = (
SELECT [test_code]
FROM [ws_test_request]
WHERE [client_id] = @clientid
AND [sample_specimen_id] = @sample_identifyingnumber
)
);