SQL SELECT 语句不适用于 DELETE
SQL SELECT statement doesn't work for DELETE
我有一个 SQL 声明,我正在尝试 运行 删除与 user_id 和用户名关联的答案。该查询在尝试 select 时有效,但不适用于删除。我在 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语句:
SELECT * FROM answers AS ans INNER JOIN users AS usr ON ans.user_id = usr.user_id WHERE (usr.username = 'username');
DELETE 语句:
DELETE FROM answers AS ans INNER JOIN users AS usr ON ans.user_id = usr.user_id WHERE (usr.username = 'username');
table 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
table 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
table 中的一行或多行(分配给从 WHERE 子句中的用户名获得的 user_id 的所有行) 删除。
你很接近。您需要列出要从中删除的 table(s)。例如:
DELETE ans
FROM answers ans INNER JOIN
users usr
ON ans.user_id = usr.user_id
WHERE usr.username = 'username';
我有一个 SQL 声明,我正在尝试 运行 删除与 user_id 和用户名关联的答案。该查询在尝试 select 时有效,但不适用于删除。我在 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语句:
SELECT * FROM answers AS ans INNER JOIN users AS usr ON ans.user_id = usr.user_id WHERE (usr.username = 'username');
DELETE 语句:
DELETE FROM answers AS ans INNER JOIN users AS usr ON ans.user_id = usr.user_id WHERE (usr.username = 'username');
table 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
table 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
table 中的一行或多行(分配给从 WHERE 子句中的用户名获得的 user_id 的所有行) 删除。
你很接近。您需要列出要从中删除的 table(s)。例如:
DELETE ans
FROM answers ans INNER JOIN
users usr
ON ans.user_id = usr.user_id
WHERE usr.username = 'username';