-2

这个问题让我很困惑:

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 版

4

2 回答 2

2

你的陈述有两个问题:

  1. 您没有选择要插入的电子邮件(仅 id)
  2. 您正在使用 '=' 而不是IN子句。

应该是这样的:

INSERT INTO sub_users(user_id, email)
 SELECT user_id, email FROM users
  WHERE email IN ('someemail@email.com', 'test@email.com');

反而。

更新(基于评论)

INSERT INTO sub_users(user_id, email)
 SELECT user_id, 'test@email.com' FROM users
  WHERE email = 'someemail@email.com';
于 2009-10-26T02:21:58.813 回答
2

您至少有两个我可以看到的错误:

  1. 您正在尝试插入两列值得数据 (user_idemail) 但仅从user_id后半部分中选择一列 ( ) INSERT INTO ... SELECT。您必须选择与尝试插入相同数量的列,并且顺序很重要。
  2. 您的SELECT. 我想你想使用:

    WHERE email IN ('email1@foo.com', 'email2@bar.com')

或其等价物:

WHERE email = 'email1@foo.com'
   OR email = 'email2@bar.com'
于 2009-10-26T02:23:15.497 回答