sql
  • mysql
  • 2010-10-30 4404 views 9 likes 
    9

    Tôi đã tìm thấy các câu hỏi tương tự với câu trả lời đúng. Nhưng chúng hơi phức tạp đối với tôi. Tôi chỉ muốn một tuyên bố cơ bản đơn giản.Cập nhật và chọn trong một truy vấn

    tôi có:

    string sql = "UPDATE tblPopUp 
           SET PopUp = 'False' 
           WHERE DisplayNo = 1" 
    

    ... và:

    string sql1 = "SELECT Period 
           FROM tblPopUp 
           WHERE DisplayNo = 1" 
    

    Làm thế nào tôi có thể kết hợp chúng?

    Trả lời

    13
    UPDATE tblPopUp 
    SET PopUp = 'False', Period = Period 
    OUTPUT DELETED.Period 
    WHERE DisplayNo = 1 
    

    Để biết thêm thông tin về khoản OUTPUT hãy kiểm tra this post.

    +0

    Tôi nghĩ rằng điều này chỉ hoạt động trong các phiên bản SQL nhất định, không hoàn toàn trong MySQL, nhưng tôi có thể thực hiện một cái gì đó như thế này với Biến người dùng SQL và nhiều truy vấn –

    +1

    điều này thật tuyệt vời - đã tiết kiệm cho tôi rất nhiều thời gian và cách gõ. đánh dấu hồ sơ của tôi như trong quá trình bởi một trường hợp cụ thể của ứng dụng cân bằng tải của tôi trong một tuyên bố duy nhất mà duy trì một khóa trên hồ sơ ... '' ' Cập nhật đầu (5) [testdb_chetan]. [dbo]. [ tbl_ngic_recordings_master] Đặt ProcessingFlag = 'InProcessByInstance', ProcessAttempts = ProcessAttempts + 1 INSERTED OUTPUT INSERTED. * Where ProcessingFlag = 'UnProcessed' '' ' – Wjdavis5

    2

    Bạn không thể.

    Không có quy ước nào trong câu lệnh SQL UPDATE để trả về dữ liệu. Và ngược lại - một câu lệnh SELECT không ghi thông tin vào một bảng.

    Nếu bạn đã tìm thấy câu hỏi/câu trả lời mà bạn cảm thấy giống với những gì bạn muốn, vui lòng cung cấp liên kết.

    +0

    Buổi sáng. Tôi biết câu hỏi MySQL này, nhưng SQl Server có thứ gì đó thuộc loại này. http://msdn.microsoft.com/en-us/library/ms177564.aspx Không biết về MySQL ... –

    +0

    @astander: Hầu như thời gian ngủ ở đây :) Không có mệnh đề OUTPUT hoặc tương tự mà tôi biết trong MySQL - Oracle (và PostgreSQL?) Có mệnh đề RETURNING rất giống với mệnh đề OUTPUT của TSQL. Không có ANSI, với kiến ​​thức của tôi. –

    +0

    Đồng ý. Nó là DB cụ thể X- (Tốt đêm. Xem sau ... –

    -1

    Hãy thử này

    UPDATE tblPopUp 
          SET PopUp = 'False' 
          WHERE DisplayNo = '1' 
    (
    SELECT Period 
          FROM tblPopUp 
          WHERE DisplayNo = '1' 
    ) 
    
    0

    Cách chính xác để thực hiện việc này (hiện tại cho MySQL 5+), sẽ là với quy trình được lưu trữ.

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