2011-03-27 40 views
6

Ví dụ, tôi muốn làm theo các số 2 như mục tiêuKiểm tra nếu giá trị trong cột cho tất cả các hàng là chính xác giá trị

này sẽ trả về dấu hiệu tích cực:

ID  Status 
123  2 
432  2 
531  2 
123  2 

này sẽ trả về dấu hiệu tiêu cực:

ID  Status 
123  1 
432  3 
531  2 
123  2 

này sẽ trả về dấu hiệu tiêu cực:

ID  Status 
123  1 
432  1 
531  1 
123  1 

Cảm ơn

+0

Bạn có muốn biết tất cả các giá trị giống nhau hoặc nếu chúng là chính xác 2 (ví dụ)? – BlueMonkMN

+0

tất cả đều chính xác 2 – gilhanan

+0

Loại dữ liệu của cột trạng thái là gì? Và cơ sở dữ liệu là gì? –

Trả lời

11

EXISTS nên được sử dụng trong ưu tiên cho COUNT để nó có thể quay trở lại càng sớm càng dòng khớp phi đầu tiên được tìm thấy.

SELECT CASE 
     WHEN NOT EXISTS(SELECT * 
         FROM your_table 
         WHERE status <> 2) THEN 'Y' 
     ELSE 'N' 
     END AS your_result 

Bạn không nêu RDBMS. Bạn có thể cần phải gắn thêm FROM DUAL vào cuối phụ thuộc trên vào hương vị.

+0

Rất đẹp, hoạt động như một giấc mơ! – ginalster

2
  select (select count(distinct status) from T) = 1 

sẽ trở lại 1 hoặc 0 (tức là đúng hoặc sai) tuỳ thuộc vào việc tất cả các hàng có cùng giá trị trong tình trạng hay không. Nếu bạn phải xử lý các giá trị NULL trong trạng thái:

  select exists 
      (select status from T where status <> 2 or status is null) 
      as StatusContainsOtherThanTwoOrNullValue 
Các vấn đề liên quan