Как создать запрос к MSSQL «SELECT * FROM table» возвращающий фиксированное число строк, даже если данных нет?
Имеется таблица. Необходимо сделать к ней запрос и вернуть не менее 5 записей по определенным условиям. Если в таблице нет 5 записей удовлетворяющих заданным условиям, необходимо чтобы вернулись те записи, которые удовлетворяют условию (например 3 записи) и еще 2 записи с какими то фиксированными данными (числовые поля 0, строковые - пустые строки).
Есть такая замечательная SCADA-система Trace Mode 6. В ней есть возможность писать запросы к БД, а результаты привязывать жестко к внутренним переменным. Если запрос возвращает меньше данных чем привязано, то наступает локальный коллапс.
select top 5 * from (
SELECT data, str_data, status FROM table WHERE status = 1
union all
select 0, '', 0
union all
select 0, '', 0
union all
select 0, '', 0
union all
select 0, '', 0
union all
select 0, '', 0
) X
order by status desc
Действительно, жесть, лучше не скажешь.
Зачем так делать вообще? Прикрутите эти нулевые строки на стороне, обрабатывающей этот результат, зачем издеваться над mysql?