Ссылка на столбец, который не существует - PullRequest
1 голос
/ 01 сентября 2011

У меня запрос SQLite3, который взрывается, потому что столбец не существует.Вот упрощенная версия запроса:

SELECT
    colA,
    colB,
    (colA + colB) colC,
    (colA + colB + colC) colD
FROM
    myTable

Запрос взрывается, когда в строке colC указывается ссылка для вычисления colD.Я надеялся, что, поскольку я определил colC перед colD, это сработает.

Что я могу сделать, чтобы достичь того, чего я хочу?Мне нужно, чтобы colC вычислялся во время выполнения запроса.

Ответы [ 2 ]

2 голосов
/ 01 сентября 2011

Вы можете использовать подзапрос:

SELECT
    colA,
    colB,
    colC,
    (colA + colB + colC) colD
FROM (
    SELECT
        colA,
        colB,
        (colA + colB) colC
    FROM
        myTable
) x
0 голосов
/ 01 сентября 2011

За это:

SQLite (в настоящее время) не дает никаких обещаний относительно имен столбцов в
запросах, в которых отсутствует предложение AS.

Я бы предложилпопробуем это:

SELECT
    colA,
    colB,
    (colA + colB) AS colC,
    (colA + colB + colC) AS colD
FROM
    myTable

Возможно, что вычисленное значение не будет иметь псевдоним, пока набор результатов не будет готов к работе ... или какой-либо другой такой проблеме синхронизации.Почему бы просто не повторить вычисления следующим образом:

SELECT
    colA,
    colB,
    (colA + colB) colC,
    (colA + colB + colA + colB) colD
FROM
    myTable

Таким образом, вам не придется читать псевдоним, вычисляемый столбец.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...