2012-06-30 38 views
12

Tôi đã thấy nhiều bài đăng về điều này trong SO. Nhưng tôi không thể nhận được câu trả lời. Tôi muốn truy vấn kiểm tra xem một hàng cụ thể có tồn tại hay không trong bảng. Nếu nó tồn tại, nó sẽ trả về cho tôi một số chuỗi đúng và ngừng tìm kiếm ở đó và nếu không trả về false.Kiểm tra xem một hàng tồn tại hay không trong postgresql

+3

Có một dấu phẩy mất tích trong truy vấn của bạn. – wildplasser

+1

Bạn đã thử những gì? Làm thế nào để bạn xác định hàng? Bởi rowid hoặc các giá trị của tất cả các thuộc tính? Nó có phải là một truy vấn hay là một hàm PL/SQL có thể chấp nhận không? – toniedzwiedz

Trả lời

35
select 
    case when exists (select true from table_name where table_column=?) 
    then 'true' 
    else 'false' 
    end; 

Nhưng nó sẽ là tốt hơn để chỉ trả boolean thay vì chuỗi:

select exists (select true from table_name where table_column=?); 
-11

Spoiler:

-- EXPLAIN ANALYZE 
WITH magic AS (
     WITH lousy AS (SELECT * FROM one WHERE num = -1) 
     SELECT 'True'::text AS truth 
     WHERE EXISTS (SELECT * FROM lousy) 
     UNION ALL 
     SELECT 'False'::text AS truth 
     WHERE NOT EXISTS (SELECT * FROM lousy) 
     ) 
SELECT * 
FROM magic 
     ; 
+1

Đây là cách quá phức tạp. – Tometzky

+0

Nó được dự định là một spoiler. OP chắc chắn là bài tập về nhà và không có nỗ lực. – wildplasser

+8

Những gì bạn viết là vô nghĩa ngay cả đối với tôi. Bạn không gia sư cung cấp một ví dụ cố ý obfuscated đó là làm việc nhưng [The Daily WTF] (http://thedailywtf.com/) xứng đáng. Ví dụ, bạn có thể trỏ tới tài liệu về 'case' và' exist', vì nó chỉ hữu ích cho ai đó biết những gì cần tìm. – Tometzky

Các vấn đề liên quan