Chạy PostgreSQL (7.4 và 8.x) và tôi nghĩ điều này đã hoạt động nhưng hiện tại tôi đang gặp lỗi.SQL ORDER BY with CASE with UNION ALL
Tôi có thể chạy truy vấn một cách riêng biệt và nó hoạt động tốt, nhưng nếu tôi UNION hoặc UNION ALL, nó sẽ phát ra lỗi.
này ra lỗi: (Cảnh báo: pg_query(): Truy vấn thất bại: ERROR: Cột "Field1" không tồn tại ... 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
tác phẩm này :
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
và việc này cũng như:
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
và nếu tôi rời khỏi ORDER BY và chỉ cần sử dụng UNION hoặc UNION ALL nó cũng vậy.
Bất kỳ ý tưởng nào?
Sẽ không hoạt động vì '" Field1 "' không phải là tên cột. – Benoit
xin lỗi đã không hoạt động, cùng một lỗi –
Có, nhận thấy điều đó. Đã sửa đổi câu trả lời .... – CristiC