2011-10-12 15 views
8

Làm thế nào để viết IF EXISTS như được hiển thị trong truy vấn dưới đây trong SQLite? Tôi đọc ở đâu đó rằng mệnh đề IF không tồn tại trong SQLite. Điều gì sẽ là một lựa chọn tốt hơn cho điều này?NẾU NẾU TRẢ TIỀN SQLite

if exists (select username from tbl_stats_assigned where username = 'abc') 
    select 1 as uname 
else 
    select 0 as uname 
+0

Bạn sẽ cần một bảng chứa tất cả tên người dùng cho dù được gán hay không (trong trường hợp này, bảng liệt kê tất cả người dùng). Bạn không thể lấy một bản ghi được trả về trong tập kết quả cho một giá trị không tồn tại là một số bảng nào đó trong cơ sở dữ liệu. –

+0

Cảm ơn Larry. Ở đây, tôi không cố gắng lấy lại một bản ghi chỉ kiểm tra nếu một kết quả phù hợp được tìm thấy. – thinkster

+1

Sau đó, thực thi lệnh SELECT đối với bảng đó bằng bất kỳ ngôn ngữ nào bạn đang sử dụng để nói chuyện với cơ sở dữ liệu. Kiểm tra tập kết quả trả về để xác định xem nó có một hàng hay không. Không có hàng nào có nghĩa là không có người dùng nào trong bảng. –

Trả lời

16

Chỉ cần làm điều đó một cách SQL tiêu chuẩn:

select exists(
    select 1 
    from tbl_stats_assigned 
    where username = 'abc' 
); 

Giả sử tất nhiên rằng 1 của bạn và 0 thực sự giá trị boolean (mà SQLite đại diện với một và không giống như MySQL).

Điều đó sẽ hoạt động trong bất kỳ cơ sở dữ liệu SQL nào và một số thậm chí có tối ưu hóa đặc biệt để hỗ trợ thành ngữ đó.

+0

Cảm ơn bạn đã làm việc! – thinkster

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