Ich habe eine Tabelle mit mehreren Spalten vorhandener Daten wie bereitsmysql-Update, wenn alle Werte existieren nicht in derselben Tabelle sonst nichts
+------+------+--------------+------+---------+ | id | ref |name |role | status | +------+------+--------------+------+---------+ | 1 | ab |Faizal |adm | 1 | | 2 | ab |Faizal | | 0 | | 3 | cd |Faizal |usr | 1 | | 4 | am |Agrim |usr | 1 | | 5 | xy |vishal |usr | 1 | | 6 | xy |vishal |usr | 0 | | 7 | ad |ankush |usr | 1 | | 8 | ad |ankush | | 0 | | 9 | mm |vishal |oth | 1 | +------+------+--------------+------+---------+
und ich will nicht, eine Rolle zu einem Benutzer mehrere Zeit in Tabelle zuweisen, Update sollte nur Maßnahmen ergreifen, wenn in der Tabelle Benutzer haben nicht die gleiche Rolle mit dem gleichen Status. Wie ich diese Abfrage versucht
UPDATE roles t1
SET
t1.role = 'adm',
t1.status = '1',
t1.ref = 'ab'
WHERE t1.id = 2 AND NOT EXISTS
(
SELECT 1
FROM roles t2
WHERE t1.role = t2.role
AND t1.status = t2.status
AND t1.ref = t2.ref
)
Es gibt einen Fehler ich nach dem Ausführen der Abfrage wollen:
+------+------+--------------+------+---------+ | id | ref |name |role | status | +------+------+--------------+------+---------+ | 1 | ab |Faizal |adm | 1 | | 2 | ab |Faizal | | 0 | | 3 | cd |Faizal |usr | 1 | | 4 | am |Agrim |usr | 1 | | 5 | xy |vishal |usr | 1 | | 6 | xy |vishal |usr | 0 | | 7 | ad |ankush |usr | 1 | | 8 | ad |ankush | | 0 | | 9 | mm |vishal |oth | 1 | +------+------+--------------+------+---------+
nichts geändert Da die gegebene Schlüsseldaten existieren bereits in der Tabelle.
Ein weiteres Beispiel: Führen Sie die Abfrage mit anderen wichtigen Daten.
UPDATE roles t1
SET
t1.role = 'adm',
t1.status = '1',
t1.ref = 'ad'
WHERE t1.id = 8 AND NOT EXISTS
(
SELECT 1
FROM roles t2
WHERE t1.role = t2.role
AND t1.status = t2.status
AND t1.ref = t2.ref
)
nach dem Ausführen der Abfrage-Tabelle soll:
+------+------+--------------+------+---------+ | id | ref |name |role | status | +------+------+--------------+------+---------+ | 1 | ab |Faizal |adm | 1 | | 2 | ab |Faizal | | 0 | | 3 | cd |Faizal |usr | 1 | | 4 | am |Agrim |usr | 1 | | 5 | xy |vishal |usr | 1 | | 6 | xy |vishal |usr | 0 | | 7 | ad |ankush |usr | 1 | | 8 | ad |ankush | | 0 | | 9 | mm |vishal |oth | 1 | +------+------+--------------+------+---------+
im Auge Bedingungen halten:
- Wir können nicht INSERT oder DELETE Tabelle in.
- Kann nicht die Zeilen aktualisieren, wenn status = 1
zeigen Sie uns Beispieldaten und Wunschergebnis \t Bitte lesen Sie [** How-to-Ask **] (http: // stackoverflow.com/help/how-to-ask) \t \t Und hier ist ein großartiger Ort, um [** START **] (http://spaghettiba.com/2015/04/24/how-to-post-at -sql-question-on-a-public-forum /) lernen, wie Sie die Qualität Ihrer Fragen verbessern und bessere Antworten erhalten. –
Jetzt habe ich meine Frage PLZ Check .. aktualisiert und mich nach dem Lesen der vollständigen Frage .. –
Ich verstehe nicht, dass Sie nicht EXIST und Sie haben die eindeutige ID, warum stören Sie, die NICHT EXISTIEREN? –