MySQL事务查询帮助
这个问题困扰着我:MySQL事务查询帮助,sql,mysql,transactions,syntax-error,mysql-error-1064,Sql,Mysql,Transactions,Syntax Error,Mysql Error 1064,这个问题困扰着我: BEGIN; INSERT INTO sub_users(user_id, email) SELECT user_id FROM users WHERE email='someemail@email.com', '$email'; COMMIT; 通常,我在该事务中有多个语句,但为了清晰起见,我删除了这些语句 我得到这个错误: #1064 - You have an error in your SQL syntax; check the manual that corre
BEGIN;
INSERT INTO sub_users(user_id, email)
SELECT user_id FROM users WHERE email='someemail@email.com', '$email';
COMMIT;
通常,我在该事务中有多个语句,但为了清晰起见,我删除了这些语句
我得到这个错误:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near ' 'test@email.com'' at line 1
我使用的是MySQL版本5.1.36您的声明有两个问题:
INSERT INTO sub_users(user_id, email)
SELECT user_id, email FROM users
WHERE email IN ('someemail@email.com', 'test@email.com');
相反
更新(基于评论)
我可以看到您至少有两个错误:
user\u id
和email
),但仅从插入的后半部分中选择一列(user\u id
)。。。选择
。您必须选择与尝试插入的列数相同的列数,并按顺序排列SELECT
的谓词中有语法错误。我想你应该使用:
电子邮件在哪里('email1@foo.com', 'email2@bar.com)
WHERE email = 'email1@foo.com'
OR email = 'email2@bar.com'
但是,如果我要插入的第二个值不是来自select。那我该怎么办?我只需要用户表中的用户id。@Chad,你可以做
插入子用户(用户id,电子邮件)选择用户id,从中选择“某些常量”。
'some constant'
也可以是您从中选择的表中的函数或其他字段。不,电子邮件不会来自任何表,而是来自PHP变量。我已在此处重新发布:我要插入的电子邮件位于我从中选择的表中。您从用户中选择。上述查询将从用户
中选择其电子邮件
字段为的所有记录'someemail@email.com“或者”test@email.com'并将这些记录插入子用户
。如果您想做其他事情,请澄清您的问题好的,我想用电子邮件获取用户的用户名someemail@email.com,然后将其与新电子邮件一起插入sub_users表(test@email.com). 所以test@email.com将来自一个php变量,而不是数据库。我明白了。您需要在select子句中将新电子邮件指定为常量值(或要绑定的参数)。我已经用一个样本更新了上面的答案。test@email.com不应该来自任何mysql表。它将由用户定义,因此它将是PHP变量。我可能不得不开始一篇新的文章,因为这篇文章似乎让每个人都感到困惑。我只想从users表中选择一个值,然后将该值和用户定义的$email值插入sub_users表中;请仔细阅读回复。
WHERE email = 'email1@foo.com'
OR email = 'email2@bar.com'