Được rồi, vậy câu hỏi SQL nhanh ở đây (sử dụng sql-server-2008).SQL Chọn hoặc Chèn ID trả lại
Tôi có một bảng vẽ bản đồ names
với các cột sau
ID
DisplayName
Những gì tôi muốn làm là đầu tiên SELECT [ID] FROM [names] WHERE [DisplayName] = 'chuck';
NHƯNG, nếu tên 'chuck' không tồn tại trong cơ sở dữ liệu, tôi muốn tạo nó và trả về tự động tăng lên ID
.
Tôi đã tự hỏi liệu SQL có xây dựng một số cách để làm điều này một cách dễ dàng, hoặc nếu tôi phải đi theo con đường dài?
tuyến đường dài là một cái gì đó như thế này
SELECT COUNT(ID) AS count, ID FROM names WHERE DisplayName='chuck'
IF(count > 0)
SELECT ID as ReturnID;
ELSE
BEGIN
INSERT INTO names(DisplayName) values('chuck');
SELECT scope_identity() as ReturnID;
END
tôi đã không kiểm tra rằng tuyên bố cuối cùng, nhưng tôi giả định các chặng đường dài sẽ là một cái gì đó như thế. Nếu không có được xây dựng trong cách, tôi sẽ đánh giá cao nếu ai đó chỉ đơn giản là có thể chính xác tuyên bố đó (như tôi chắc chắn nó không phải là hoàn toàn chính xác).
Nếu chỉ hỗ trợ 200 * +, hãy sử dụng [Cú pháp MERGE] (http://technet.microsoft.com/en-us/library/bb510625.aspx) –
Bạn có thể cung cấp ví dụ không? Tôi đang cố gắng tìm hiểu các cách nâng cao hơn khi sử dụng sql. –
@ kelton52: có ví dụ ở cuối bài báo OMG Ponies được liên kết. Bạn cần cuộn xuống một chút. –