+1 за помощь с ответом. Я сделал это, но я получаю эту ошибку: ОШИБКА: ORDER BY для результата UNION / INTERSECT / EXCEPT должен быть в одном из столбцов результата
к PostgreSQL (7.4 и 8.x), и я думал, что это работает, но теперь я получаю ошибки.
Я могу запускать запросы по отдельности, и это работает просто отлично, но если я UNION или UNION ALL, это выдает ошибку.
Это ошибки: (Предупреждение: pg_query (): Запрос не выполнен: ОШИБКА: столбец "Field1" не существует ... ORDER BY CASE "Field1" W ...)
SELECT "Field1" AS field_1, "Field2" AS field_2,
"Field3" AS field_3, "Field4" AS field_4
FROM "TableName"
WHERE condition
AND other_condition
UNION ALL
SELECT "Field1" AS field_1, "Field2" AS field_2,
"Field3" AS field_3, "Field4" AS field_4
FROM "TableName"
WHERE yet_another_condition
AND yet_another_other_condition
ORDER BY CASE "Field1"
WHEN 'A' THEN 1
WHEN 'B' THEN 2
WHEN 'C' THEN 3
ELSE 4
END
Это работает:
SELECT "Field1" AS field_1, "Field2" AS field_2,
"Field3" AS field_3, "Field4" AS field_4
FROM "TableName"
WHERE yet_another_condition
AND yet_another_other_condition
ORDER BY CASE "Field1"
WHEN 'A' THEN 1
WHEN 'B' THEN 2
WHEN 'C' THEN 3
ELSE 4
END
И это работает также:
SELECT "Field1" AS field_1, "Field2" AS field_2,
"Field3" AS field_3, "Field4" AS field_4
FROM "TableName"
WHERE condition
AND other_condition
ORDER BY CASE "Field1"
WHEN 'A' THEN 1
WHEN 'B' THEN 2
WHEN 'C' THEN 3
ELSE 4
END
и если я оставлю ORDER BY и просто воспользуюсь UNION или UNION ALL, это также сработает.
Есть идеи?