Ich habe zwei Tabellen. Eine davon ist einfacher String/ID nachschlagen:SQL Update mit einem Join?
StrTable:
str_key String 0 'a' 1 'b'
wo die Saiten einzigartig sind. Der andere ist komplexer und umfasst den gemeinsamen string_id
ValTable:
str_key other_key val 0 0 1.234 0 1 1.567 1 0 1.890
Jetzt möchte ich mich auf ValTable ein Update tun, eine Zeichenfolge verwendet, die ich Lookup die str_key über StrTable zu bekommen. Die einfache Aktualisierung wäre:
UPDATE ValTable SET val = 2.124 WHERE str_key = 0 AND other_key = 1 LIMIT 1
IF @@ROWCOUNT=0 INSERT INTO ValTable VALUES (0,1,2.124);
So wie kann ich ändern dies die str_key mit einigen Zeichenfolge ‚a‘ aufzublicken aufzunehmen? Ich nehme an, dass ich einen Join brauche, aber ich habe noch nie ein Update beigesteuert. Oder kann ich meiner where-Klausel einfach mehr hinzufügen?
Du hast nicht die DDL haben für Ihre Tabellen, aber das str_key unter der Annahme und other_key die PK für Ihre ValTable bilden, gibt es einen Grund, dass Sie die „LIMIT 1“ haben? Selbst wenn es nicht die PK ist, scheint es seltsam zu sein, LIMIT hier zu verwenden. –
Ich war mir nicht sicher, ob es einen Sweep der gesamten Tabelle ohne die Begrenzung dort geben würde, aber ich nehme an, es ist klug genug zu wissen, dass der Compound-Schlüssel ist * die * -Taste und betrifft nur diese eine Zeile. –