2016-07-27 23 views
1

Ich habe eine Reihe von Treffern für das, was ich versuche zu tun, aber nur bei einer SELECT und ich konnte nicht gefunden um diese Methoden mit einer UPDATE zu arbeiten.MySQL - Update/Setzen Sie eine Spalte in einer Tabelle gleich MAX-Wert aus einer anderen Tabelle

Table: Project 
Site | I-Date | Status 

Table: Schedule 
Site | F-Date | Status 

Hier ist die Abfrage, die ich jetzt habe, aber ich mag gewährleisten, dass das Projekt bisher nur auf den MAX Datum eingestellt ist, da es mehrere Einträge für jeden Standort sein könnte, aber mit unterschiedlichen Terminen in schedule.

UPDATE project 
    INNER JOIN schedule on project.site = schedule.site 
    SET project.i-date = schedule.f-date, project.status = 'complete' 
    WHERE project.site = 'site123' 

Ich habe versucht, dies zu tun:

UPDATE project 
    INNER JOIN schedule on project.site = schedule.site 
    SET project.i-date = MAX(schedule.f-date) as 'f-date', project.status = 'complete' 
    WHERE project.site = 'site123' 

aber das hat nicht funktioniert. Ich vermute, ich brauche einige verschiedene Methoden, um mich zu verbinden, aber ich habe Schwierigkeiten, die richtige Mischung zu finden.

Antwort

3

Wie wäre es mit einem Subselect?

UPDATE project 
SET 
    project.i-date = (
     SELECT MAX(f-date) 
     FROM schedule 
     WHERE schedule.site = project.site 
    ), 
    project.status = 'complete' 
WHERE project.site = 'site123' 
+0

Dies ist perfekt und weit einfacher als die Lösungen, die ich mit experimentiert. Danke, dass Sie sich die Zeit genommen haben, zu antworten! –

+0

Gern geschehen! – evilpenguin

0

UPDATE table_1 Satz Spalte_1 = (select max (Gehalt) als Gehalt von table_2) wo 1

+1

Woher nehmen Sie das Säulengehalt? Dies zeigt, wie Sie das Problem lösen können, aber nichts zur Antwort von @evilpenguins hinzufügt und nicht richtig formatiert ist. Ich weiß nicht, wer das aufgewertet hat. – Philipp

+0

Bitte überprüfen Sie die anderen Antworten, bevor Sie Ihre Beiträge veröffentlichen. Wie von @Philipp beschrieben, wurde eine sehr ähnliche Antwort mit besseren Formatierungs- und Kontextnamen vor Ihrer erstellt. Vielen Dank für Ihre Antwort, aber werfen Sie einen Blick auf die Richtlinien für Antworten (http://stackoverflow.com/help/how-to-answer) und Sie werden feststellen, dass Ihr Feedback viel mehr geschätzt wird. – ElMesa

Verwandte Themen