2016-07-23 5 views
2

Ich habe 2 Tabellen: Benutzer mit Spalten (ID, Benutzername, Passwort) und Benutzer_failed mit Spalten (Benutzer-ID, fehlgeschlagen, Zeit). Gibt es einen möglichen Weg, den ich in die Tabelle user_failed einfügen kann, indem ich nur username benutze? Ich versuche diesen Code, aber es ist fehlgeschlagen:INSERT-Wert mit SELECT in Mysql

INSERT INTO `login_attempts`(`user_id`, `time`, `failed`) 
VALUES (SELECT user_id FROM users WHERE username = 'pokemon','',3) 

Antwort

3

Ihre SQL-Abfrage ist aus verschiedenen Gründen falsch.

Folgendes sollte funktionieren, wenn ich Ihre Abfrage richtig interpretiert habe.

INSERT INTO `login_attempts`(`user_id`, `time`, `failed`) 
SELECT id, '', 3 FROM users WHERE username = 'pokemon' 

INSERT in eine Tabelle ing von einem SELECT nicht VALUES (...) erfordern. Hier ist ein Beispiel dafür, wie Sie VALUES (...) verwenden würden:

INSERT INTO `login_attempts`(`user_id`, `time`, `failed`) 
VALUES (1, '', 3) 

Auch Ihre Sub-Abfrage SELECT user_id FROM users WHERE username = 'pokemon','',3 die WHERE Klausel ungültig ist. Speziell der '',3 Teil, den ich vermute, sind die Werte, die Sie für time und failed einfügen wollten.

+0

es kann ich nicht bekommen diesen Fehler # 1054 - Unknown column 'user_id' in 'field list' – Ying

+0

ah es ist Arbeit, ich ändern, nur weil Tisch in meinem Benutzer-ID User_id es ist ID nicht Benutzer-ID. Vielen Dank – Ying

0

Dies wird funktionieren .... Sie müssen geschweifte Klammern vor und nach Anweisungen hinzufügen.

INSERT INTO `login_attempts`(`user_id`, `time`, `failed`) VALUES ((SELECT user_id FROM users WHERE username = 'pokemon'),'',3)