2010-10-30 8 views
9

Ich habe ähnliche Fragen mit richtigen Antworten gefunden. Aber sie sind ein bisschen kompliziert für mich. Ich möchte nur eine einfache Grundaussage.Aktualisieren und wählen Sie in einer Abfrage

ich habe:

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

... und:

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

Wie kann ich sie kombinieren?

Antwort

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

Weitere Informationen über die Klausel OUTPUT bitte this post überprüfen.

+0

Ich denke das nur funktioniert in bestimmten Versionen von SQL, überhaupt nicht in MySQL, aber ich konnte so etwas mit SQL-Benutzervariablen und Multi-Abfragen erreichen –

+1

das ist großartig - hat mir eine Menge Zeit und Tipparbeit erspart Markieren Sie meine Datensätze als in Bearbeitung durch eine bestimmte Instanz meiner Last ausgeglichen Anwendung in einer einzigen Anweisung, die eine Sperre für die Datensätze verwaltet ... '' Update top (5) [testdb_chetan]. [dbo]. [ tbl_ngic_recordings_master] Setzen Sie ProcessingFlag = 'InProcessByInstance', ProcessAttempts = ProzessAttempts + 1 OUTPUT INSERTED. * Wobei ProcessingFlag = 'UnProcessed' '' ' – Wjdavis5

2

Sie können nicht.

In einer SQL UPDATE-Anweisung gibt es keine Konvention für die Rückgabe von Daten. Und umgekehrt - eine SELECT-Anweisung schreibt keine Informationen in eine Tabelle.

Wenn Sie Fragen/Antworten gefunden haben, die Ihrer Meinung nach ähnlich sind, wie Sie möchten, geben Sie bitte Links an.

+0

Morgen. Ich kenne diese MySQL-Frage, aber SQl Server hat etwas von dieser Art. http://msdn.microsoft.com/en-us/library/ms177564.aspx Weiß nicht über MySQL ... –

+0

@astander: Fast Bett Zeit hier :) Keine OUTPUT-Klausel oder ähnliches, die ich in MySQL kenne - Oracle (und PostgreSQL?) Hat die RETURNING-Klausel, die der OUTPUT-Klausel von TSQL sehr ähnlich ist. Keine sind ANSI, meines Wissens. –

+0

Aggreed. Es ist DB Specific X- (. Gute Nacht. Siehe später ... –

-1

Probieren Sie diese

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

Der richtige Weg, dies zu tun (jetzt für MySQL 5+), wäre mit einer gespeicherten Prozedur.

Verwandte Themen