Я не верю, что то, что вам нужно, возможно в стандартном SQL или MySQL (ну, не прямо в таблице, но см. Ниже возможное решение).
Нет возможности выполнить обычную манипуляцию с колонками на sr.*
, вам придется делать колонки по отдельности, что-то вроде:
select sr.column1,
sr.column2,
coalesce (sr.column3, 0),
sr.column4,
cs.subjectid ...
Одна из возможностей, хотя и немного глупая, этопредоставить представление по фактической таблице, где каждый столбец представления имеет аналогичное имя, но определяется как coalesce
в эквивалентном столбце таблицы.Под этим я подразумеваю что-то вроде:
create view sometableview (column1, column2, column3, column4)
as select column1, column2, coalesce (column3, 0), column4
from sometable;
select srv.*,
cs.subjectid, ...
:
from sometableview srv,
otherTable cs
where ...
Это не сделает его более быстрым , но это упростит ваш запрос, что, как вам кажется, и нужно.Я не совсем уверен, , почему это требование, так как запросы, как правило, устанавливаются один раз и меняются редко, так что об их длине необычно беспокоиться.Но я собираюсь предположить, что у вас есть веские основания для требования, пока не будет сообщено иначе: -)