مساعدة الاستعلام عن معاملات MySQL
-
06-07-2019 - |
سؤال
هذه المشكلة تحيرني:
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');
بدلاً من.
تحديث (بناء على التعليق)
INSERT INTO sub_users(user_id, email)
SELECT user_id, 'test@email.com' FROM users
WHERE email = 'someemail@email.com';
نصائح أخرى
لديك خطأين على الأقل يمكنني رؤيتهما:
- أنت تحاول إدراج عمودين من البيانات (
user_id
وemail
) ولكن تحديد عمود واحد فقط (user_id
) من النصف الثاني منINSERT INTO ... SELECT
.يجب عليك تحديد نفس عدد الأعمدة التي تحاول إدراجها، وترتيب الأمور. لديك خطأ في بناء الجملة في المسند الخاص بك
SELECT
.أعتقد أنك تريد استخدام:WHERE email IN ('email1@foo.com', 'email2@bar.com')
أو ما يعادلها:
WHERE email = 'email1@foo.com'
OR email = 'email2@bar.com'
لا تنتمي إلى StackOverflow