Có cách nào để xây dựng một CTE cho một danh sách các giá trị mã hóa cứng không? Ví dụ: tôi có danh sách các ID đã biết (tức là 101,102,105,200 ...), làm cách nào để tôi có thể tạo CTE với một cột được gọi là ID nhưng tất cả các giá trị ID được mã hóa cứng trong truy vấn? BTW, tôi cần phải chạy truy vấn này trong Oracle. Cảm ơn!Tạo danh sách các giá trị được xác định trong CTE
Trả lời
Bạn có thể làm một cái gì đó giống như
WITH cte AS (
SELECT 101 id FROM dual UNION ALL
SELECT 102 FROM dual UNION ALL
SELECT 105 FROM dual UNION ALL
SELECT 200 FROM dual UNION ALL
...
)
Tùy thuộc vào những gì bạn đang thực sự cố gắng để hoàn thành, tuy nhiên, bạn có thể muốn tuyên bố một bộ sưu tập và sử dụng (có hoặc không có chức năng phân tích một bằng dấu phẩy chuỗi)
CREATE TYPE num_tbl
AS TABLE OF NUMBER;
WITH cte AS (
SELECT column_value
FROM TABLE(num_tbl(101, 102, 105, 200))
)
EDIT: giải pháp thông báo trước đây chỉ hoạt động cho MSSQL. Vì vậy tôi đang thêm một giải pháp Oracle. Tôi đang giữ câu trả lời ban đầu bên dưới.
Tôi đã nghĩ đến một giải pháp nữa (mặc dù giải pháp được cung cấp bởi Justin Cave vẫn có vẻ tốt hơn một chút) - sử dụng bảng tạm thời.
Sau đây là cách nó có thể trông giống như
CREATE GLOBAL TEMPORARY TABLE temp_ids
(id INT)
ON COMMIT PRESERVE ROWS;
INSERT INTO ids (id) VALUES (101);
INSERT INTO ids (id) VALUES (102);
INSERT INTO ids (id) VALUES (103);
này phải là một giải pháp hợp lệ cho cơ sở dữ liệu Oracle.
câu trả lời gốc bên dưới
Tôi đã bắt gặp vấn đề tương tự và đây là giải pháp của tôi (điều này không hoạt động trên Oracle DB như đã đề cập trong các ý kiến, chỉ MSSQL dù)
WITH cte AS (
SELECT * FROM (
VALUES
(1, 2, 3, ...),
(2, 3, 4, ...)
) AS a (col1, col2, col3, ...)
)
INSERT INTO ...
Hope Điều này giúp :)
Cú pháp này không hợp lệ trong Oracle. –
Vì vậy, tôi xin lỗi vì sự nhầm lẫn và cảm ơn bạn đã cung cấp thông tin. Hy vọng rằng điều này sẽ giúp người khác tìm kiếm tương tự trong MSSQL. – Zax
Ok, tôi đã chỉnh sửa câu trả lời trước đó và thêm vào những gì tôi nghĩ là một giải pháp hợp lệ cho Oracle. – Zax
- 1. Giá trị mặc định trong danh sách khởi tạo C++
- 2. Giá trị danh sách không xác định enum
- 3. MongoDB tìm giá trị trong danh sách các danh sách
- 4. Cách xác định danh sách các danh sách trong Scala?
- 5. Cách xem các giá trị được lưu trong danh sách?
- 6. Làm cách nào để tạo danh sách # giá trị xác định từ mã C?
- 7. Xác định giá trị sẵn có đầu tiên trong danh sách các số nguyên
- 8. Danh sách các Biến được Xác định trong R
- 9. xác định một danh sách các hàm trong Python
- 10. Chỉ định danh sách cho một giá trị trong danh sách đó
- 11. Tạo danh sách các giá trị từ getters của Danh sách đối tượng
- 12. python nhận được một danh sách các giá trị từ danh sách các dict
- 13. Cột không xác định 'giá trị2' trong 'danh sách trường'
- 14. Xác định trước giá trị đã chọn trong danh sách thả xuống
- 15. Chia danh sách thành các danh sách con dựa trên các giá trị biên giới
- 16. Tạo danh sách các macro tiền xử lý được xác định bởi trình biên dịch
- 17. Giá trị hoặc hàm tạo không được xác định
- 18. IntelliJ IDEA: Danh sách các thẻ git được xác định
- 19. Đặt giá trị mặc định trong danh sách thả xuống Xác thực Dữ liệu
- 20. lấy danh sách các tuyến đường zend được xác định
- 21. Danh sách các giá trị enum trong java
- 22. Lấy các giá trị duy nhất trong Danh sách Danh sách trong python
- 23. tổng mỗi giá trị trong một danh sách các hàng
- 24. Lọc danh sách XPath dựa trên các giá trị trong danh sách liên
- 25. Moq cách xác định một phương pháp được gọi với một danh sách có chứa giá trị nhất định
- 26. Xác định giá trị ENUM trong một plist trong Xcode
- 27. Tạo danh sách các số nguyên với các giá trị trùng lặp trong Python
- 28. Cách lấy các giá trị duy nhất trong Danh sách
- 29. Thay thế các giá trị trong danh sách CMake
- 30. Giá trị Python trong Danh sách
Chỉ cần thêm các phiên bản gần đây cho phép các bí danh cột cho các mệnh đề bao thanh toán con được định nghĩa riêng biệt, có khả năng giữ mệnh đề truy vấn một bit neater: WITH cte (id) as (SELECT 101 từ kép ... http://docs.oracle.com/database/121/SQLRF/statements_10002.htm#SQLRF01702 –