Bạn đang cố gắng làm gì cơ bản? Tại sao đây là cách bạn đã chọn để làm điều đó? Dường như bạn có một chút mờ trong việc hiểu logic dựa trên bộ. Mỗi câu trả lời được cung cấp bởi các áp phích khác là hợp lệ và sẽ hoạt động, nhưng có thể không phù hợp nhất với mục đích của bạn. Đây có phải là quá trình xử lý đối với tập dữ liệu hiện tại không? Là một phần của quá trình tải hoặc chèn dữ liệu? Mỗi trường ID bạn đã liệt kê có phạm vi giá trị duy nhất của riêng nó. Dựa trên ví dụ của bạn có vẻ như những gì bạn đang thực sự muốn làm là cập nhật giá trị bool khi ID2 = 1
UPDATE table_name SET Bool = 'T'
WHERE Id2 = 1
Nhiều khả năng bạn đang muốn phát triển một logic đó đặt giá trị Bool dựa trên một số dữ liệu quy tắc - ví dụ: nếu Id2 nhỏ hơn hoặc bằng Id1. Một tuyên bố trường hợp hoạt động ở đây:
UPDATE table_name SET Bool = CASE WHEN Id1 > Id2 THEN 'T' ELSE 'F' END
Điều này hiệu quả hơn khi bạn xử lý các bộ quy tắc AND/OR trong mệnh đề WHERE cho mỗi biến thể của giá trị bạn chèn.
Hãy xem WHERE là bộ lọc chứ không phải là nơi để triển khai nếu/sau đó nhập logic.
Chèn dữ liệu nhỏ (bạn có thể nhập giá trị vào trường bảng theo cách thủ công, chèn vào một số loại giao dịch biểu mẫu web bằng giao dịch) có lẽ đơn giản nhất là đặt giá trị theo cách thủ công, hoặc xây dựng phần thủ tục của hệ thống của bạn và áp dụng quy tắc xác thực cho bảng.
Nếu bạn muốn viết thủ tục đã lưu, bạn sẽ tạo biến cho giá trị ID và liên kết các biến này với bất kỳ hệ thống nào truyền thông tin bên ngoài vào hệ thống cơ sở dữ liệu của bạn. (Tôi sẽ đoán bạn đã tạo ra các cấu trúc bảng);
CREATE PROCEDURE table_name_insert
@Id1 Int NOT NULL,
@Id2 Int NOT NULL
-- If you want to execute the logic outside of the DB environment
-- (perhaps as part of an SSIS package) then you will want to add this
-- variable and pass it in explicitly.
, @Bool bit NOT NULL
AS
DECLARE @sql nvarchar(4000)
SET @sql = '
INSERT INTO table_name (ID1, ID2, Bool)
SELECT @Id1, @Id2, [Case Logic or Variable Value for Bool]
' EXEC sp_executeSQL @sql
Quá trình này có thể được gọi bởi chương trình của bạn và bạn chuyển các biến bạn có thể tạo từ một mảng vào đó. Cũng có nhiều cách để bạn có thể nhập các giá trị trực tiếp vào cột thích hợp và sau đó thực hiện logic Bool trong mã chèn sau. "Hard Coding" một câu lệnh WHERE để xử lý mọi trường hợp là không hiệu quả, và một thói quen xấu để xâm nhập vào.
Bạn đang sử dụng cơ sở dữ liệu nào? –