2011-10-15 38 views
5

Trong hầu hết các sản phẩm SQL, tôi có thể chọn từ không có bảng hoặc từ một bảng giả như thế này:Làm thế nào để chọn không hoặc một bản ghi từ một bảng dummy trong Ingres

-- Oracle 
SELECT 1 FROM DUAL 

-- Many other SQL products (including Ingres) 
SELECT 1 

Đôi khi, tôi muốn thêm một điều kiện đối với tuyên bố ở trên, để truy xuất bản ghi 0 hoặc 1, tùy thuộc vào điều kiện

-- Oracle 
SELECT 1 FROM DUAL WHERE 1 = 0 

-- Many other SQL products (but not Ingres) 
SELECT 1 WHERE 1 = 0 

Nhưng những điều trên không hiệu quả đối với Ingres 10.0. Tôi làm nó như thế nào?

+0

Vì lý do tính di động, xem xét việc tạo bảng vĩnh viễn của riêng bạn phụ trợ cơ sở đó đảm bảo sẽ luôn luôn có chính xác một hàng. – onedaywhen

+0

@onedaywhen: Trong một số trường hợp, đó có thể là một ý tưởng hay. Tuy nhiên, trong trường hợp của tôi, tôi không có quyền kiểm soát cơ sở dữ liệu máy khách, vì tôi đang phát triển một thư viện trừu tượng cơ sở dữ liệu cho Java (http://www.jooq.org) –

Trả lời

5

Tôi chưa sử dụng Ingres nhưng tôi cho rằng câu hỏi của bạn là FROM là bắt buộc nếu có WHERE? Trong trường hợp đó như thế nào về

SELECT 1 FROM (SELECT 1 AS C) AS T WHERE 1 = 0 

Hoặc

SELECT CASE WHEN 1 = 0 THEN 1 ELSE 0 END 

(Người cuối cùng sẽ luôn luôn trả về một hàng nhưng cho phép bạn kiểm tra một điều kiện)

+0

Giải pháp thứ hai của bạn sẽ không hoạt động trong trường hợp của tôi (ví dụ của tôi đã được đơn giản hóa một chút), nhưng tất nhiên, điều đầu tiên sẽ là. Tôi sẽ chờ đợi lâu hơn một chút với chấp nhận mặc dù, như tôi muốn một bảng giả cho các lý do cú pháp –

0

AFAIK iidbconstants danh mục hệ thống chỉ có một hàng , vì vậy bạn có thể sử dụng nó. Tôi không thể nghĩ ra một trường hợp có nhiều hàng nhưng bạn có thể muốn thêm một DISTINCT trong trường hợp:

select distinct 1 from iidbconstants 
Executing . . . 


+------+ 
|col1 | 
+------+ 
|  1| 
+------+ 
(1 row) 
continue 
* select distinct 1 from iidbconstants where 1 = 0 
Executing . . . 


+------+ 
|col1 | 
+------+ 
+------+ 
(0 rows) 
Các vấn đề liên quan