У меня есть простой SELECT ...SQL: Как вернуть все NULL, если запись не найдена?
SELECT TETmeetingID,
DateID,
WeekNo,
TETID,
TradeStaffID,
EngStaffID,
MathsStaffID,
IoTStaffID,
Others,
TradeStaffPresent,
EngStaffPresent,
MathsStaffPresent,
IoTStaffPresent,
CurricTrade,
CurricEnglish,
CurricMaths,
CurricIoT,
CurricAlign,
Notes,
WeeksToGo,
TotalWeeks,
CreatedDate,
CreatedBy,
Complete,
CompletedDate,
CompletedBy
FROM tblTETMeeting
WHERE TETmeetingID = @SomeParameter
Работы, конечно, когда пункт WHERE
возвращает true
.
Но если это не так, я хочу, по крайней мере, увидеть одну запись с NULL в каждом столбце.
Как я могу это сделать, пожалуйста? И я выбрал приведенный выше пример, чтобы показать возможное количество столбцов, которые я мог бы использовать, поэтому, если есть более общий запрос, который может «определять» столбцы и не иметь жесткого кода в ответ, это было бы предпочтительнее.
Благодаря
UPDATE
Я попытался WITH TIES
, но это также не возвращает одну запись. Возможно, я делал это неправильно. Я также попробовал трюк UNION NULL, NULL,
и т. Д., Но это грязно, когда количество столбцов может быть неопределенным «n». Единственный способ сделать это правильно, но я все еще вынужден предоставить правильное количество NULL с запросом типа CTE
.
WITH CTE ( SELECT TETmeetingID,
DateID,
WeekNo,
TETID,
TradeStaffID,
EngStaffID,
MathsStaffID,
IoTStaffID,
Others,
TradeStaffPresent,
EngStaffPresent,
MathsStaffPresent,
IoTStaffPresent,
CurricTrade,
CurricEnglish,
CurricMaths,
CurricIoT,
CurricAlign,
Notes,
WeeksToGo,
TotalWeeks,
CreatedDate,
CreatedBy,
Complete,
CompletedDate,
CompletedBy
FROM tblTETMeeting
WHERE TETmeetingID = @SomeParameter) AS tbl1
select * from CTE WHERE cte.TETmeetingID IS NOT NULL UNION SELECT NULL,NULL,NULL, etc
http: // stackoverflow.com/questions/8098795/return-a-value-if-no-record-is-found – whizzle
Такое поведение лучше всего обрабатывать на уровне приложения, а не в запросе. – sstan
Помимо того факта, что я не думаю, что это должно быть сделано в SQL, самый простой способ сделать это (IMO) - с инструкцией IF/ELSE. например 'if exists (выберите 1 из tblTETMeeting WHERE TETmeetingID = @SomeParameter) THEN myQuery ELSE SELECT NULL, NULL ...'. В качестве альтернативы, ответы на связь whizzle работают, если ожидается только одна строка. – ZLK