1

我有一条 SQL 语句,我试图运行它来删除与 user_id 和用户名关联的答案。该查询在尝试选择时有效,但不适用于删除。我在 DELETE 语句中得到的错误如下:

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'AS ans INNER JOIN users AS usr ON ans.user_id = usr.user_id WHERE (usr.userna...' at line 1
Query is: DELETE FROM answers AS ans INNER JOIN users AS usr ON ans.user_id = usr.user_id WHERE (usr.username = 'antonios')

我从 SELECT 语句得到的输出:

1   answer text goes here   1   1   a   12  44  44  antonios    U4HhMNnasQB1919QduzHO9+tgWoxsfqMY4MDUwYDDqQ=    $argon2id$v=19$m=125000,t=4,p=1$gE6rtZdzpBaehzlyrVreRQ$WuhSeAaXE2bX3N4/k1yu3yQm9p7UdKGeCU/vmYn+M7c  0   0   0   0   0   2020-10-14

选择语句:

SELECT * FROM answers AS ans INNER JOIN users AS usr ON ans.user_id = usr.user_id WHERE (usr.username = 'username');

删除语句:

DELETE FROM answers AS ans INNER JOIN users AS usr ON ans.user_id = usr.user_id WHERE (usr.username = 'username');

表结构users

user_id             int(11) NO                      PRIMARY_KEY               auto_increment
username            varchar(40)         NOT_NULL    MUL_KEY     
email               varchar(128)        NOT_NULL            
password            char(98)            NOT_NULL            
userScore           int(10) unsigned    NOT_NULL                  DEFAULT: 0    
questionsAnswered   int(10) unsigned    NOT_NULL                  DEFAULT: 0    
highestAnswerStreak int(10) unsigned    NOT_NULL                  DEFAULT: 0    
correctAnswers      int(10) unsigned    NOT_NULL                  DEFAULT: 0    
wrongAnswers        int(10) unsigned    NOT_NULL                  DEFAULT: 0    
activeSince date    NOT_NULL            

表结构answers

answers_id      int(11)     NOT_NULL   PRIMARY_KEY   auto_increment
answerText      text        NOT_NULL            
question_id     int(11)     NOT_NULL            
isCorrect       tinyint(4)  NOT_NULL            
choiceLetter    varchar(1)  NOT_NULL            
questionNumber  smallint(6) NOT_NULL            
user_id int(11) NOT_NULL            

DELETE 语句的预期输出将通过删除影响answers表中的一个或多个行(分配给从 WHERE 子句中的用户名获得的 user_id 的所有行)。

4

1 回答 1

1

你很亲密。您需要列出要从中删除的表。例如:

DELETE ans
    FROM answers ans INNER JOIN
         users usr
         ON ans.user_id = usr.user_id
    WHERE usr.username = 'username';
于 2020-10-15T16:26:13.443 回答