PDA

View Full Version : سوال: اجرای دستور select درون update



hsn_secret
چهارشنبه 02 تیر 1395, 16:01 عصر
سلام به تمامی دوستان گرامی .
ان شاءالله که طاعات و عباداتتون مقبول درگاه حق باشه .

بنده یه سوال داشتم .
چطور میشه چنین دستوری رو پیاده سازی کرد به شکل دیگه :
update (select table_name as my_muted from information_schema.tables where TABLE_NAME like '%muted%' limit 1) set blocker = 'me' where id = 3

درواقع این دستور اجرا نمیشه و خطای #1248 - Every derived table must have its own alias رو میده .
من میخوام یک تیبل رو آپدیت کنم اما اسم تیبیل رو نمیدونم و میخوام نزدیک ترین تیبیلی که از information_schema پیدا میشه رو امتحان کنم .

hsn_secret
چهارشنبه 02 تیر 1395, 16:59 عصر
این انجمن از قدیم و الیام همینطوری بوده .

Mahmood_M
چهارشنبه 02 تیر 1395, 20:30 عصر
چون نام Table مشخص نیست باید از Prepared Statement استفاده کنید
ابتدا دستور SQL رو بسازید و به صورت یک رشته داخل یک متغیر بریزید و بعد رشته رو به عنوان دستور اجرا می کنید، مثال :


SELECT table_name INTO @T FROM information_schema.tables WHERE TABLE_NAME LIKE '%muted%' limit 1;
SET @S = CONCAT('UPDATE ', @T, ' SET blocker = "me" WHERE ID = 3');

PREPARE MyStatement FROM @S;
EXECUTE MyStatement;
DEALLOCATE PREPARE MyStatement;


ابتدا نام جدول میره توی T و بعد دستور با Concat ساخته میشه و میره توی S
و در انتها رشته S به عنوان یک دستور Execute میشه

hsn_secret
چهارشنبه 02 تیر 1395, 22:28 عصر
با تشکر از شما .
اگه خواسته باشم این دستور رو داخل phpmyadmin پیاده سازی کنم به چه شکل هستش ؟

hsn_secret
چهارشنبه 02 تیر 1395, 22:34 عصر
آها مشکل حل شد تشکر !