MySQL-নির্বাচন প্রশ্নের উপর ভিত্তি করে আপডেট প্রশ্ন




select sql-update (8)

আপনি আসলে দুটি উপায়ে এটি করতে পারেন:

MySQL আপডেট সিনট্যাক্স যোগদান:

UPDATE tableA a
INNER JOIN tableB b ON a.name_a = b.name_b
SET validation_check = if(start_dts > end_dts, 'VALID', '')
-- where clause can go here

ANSI এসকিউএল সিনট্যাক্স:

UPDATE tableA SET validation_check = 
    (SELECT if(start_DTS > end_DTS, 'VALID', '') AS validation_check
        FROM tableA
        INNER JOIN tableB ON name_A = name_B
        WHERE id_A = tableA.id_A)

যে কেউ আপনি সবচেয়ে প্রাকৃতিক মনে হয় বাছাই করুন।

তারিখ-সময় অনুসারে দুটি ইভেন্টের মধ্যে কোনও সংস্থান থাকলে আমার (একই টেবিলে) চেক করতে হবে।

ডেটা এক সেট নির্দিষ্ট ইভেন্টের শেষ তারিখ সময় ধারণ করে এবং অন্যান্য ডেটা সেট অন্যান্য ইভেন্টের জন্য আরম্ভ তারিখ সময় উপস্থিত থাকবে।

দ্বিতীয় ইভেন্টের আগে প্রথম ইভেন্টটি শেষ হলে আমি তাদের লিঙ্ক করতে চাই।

আমি এখন পর্যন্ত কি আছে:

SELECT name as name_A, date-time as end_DTS, id as id_A 
FROM tableA WHERE criteria = 1


SELECT name as name_B, date-time as start_DTS, id as id_B 
FROM tableA WHERE criteria = 2

তারপর আমি তাদের যোগদান:

SELECT name_A, name_B, id_A, id_B, 
if(start_DTS > end_DTS,'VALID','') as validation_check
FROM tableA
LEFT JOIN tableB ON name_A = name_B

আমি কি তবে আমার বৈধতা_চিহ্ন ক্ষেত্রের উপর ভিত্তি করে, নির্বাচন নেস্টেডের সাথে একটি UPDATE ক্যোয়ারী চালাতে পারি?


আপনি ভেতরের যোগদান ব্যবহার করে অন্য টেবিল থেকে মান আপডেট করতে পারেন

UPDATE [table1_name] AS t1 INNER JOIN [table2_name] AS t2 ON t1.column1_name] = t2.[column1_name] SET t1.[column2_name] = t2.column2_name];

এই প্রশ্নের উত্তর জানতে এখানে ক্লিক http://www.voidtricks.com/mysql-inner-join-update/

অথবা আপনি এই কাজ করতে subquery হিসাবে নির্বাচন করতে পারেন

UPDATE [table_name] SET [column_name] = (SELECT [column_name] FROM [table_name] WHERE [column_name] = [value]) WHERE [column_name] = [value];

প্রশ্নের বিস্তারিত এখানে ব্যাখ্যা করা হয়েছে http://www.voidtricks.com/mysql-update-from-select/


আমি খুব জটিল যোগদান আমার নিজের সমাধান খুঁজছেন এই প্রশ্ন খুঁজে পাওয়া যায় নি। এটি একটি বিকল্প সমাধান, সমস্যাটির আরও জটিল সংস্করণ যা আমি মনে করি এটি কার্যকর হতে পারে।

আমি ক্রিয়াকলাপ টেবিলে product_id ক্ষেত্রটি তৈরি করতে চাই, যেখানে একটি ইউনিটে ক্রিয়াকলাপগুলি সংখ্যায়িত হয় এবং ইউনিটগুলি একটি স্তরে (একটি স্ট্রিং ?? ব্যবহার করে সনাক্ত করা হয়) সংখ্যাযুক্ত হয়, যেমন একটি SKU ব্যবহার করে ক্রিয়াকলাপ সনাক্ত করতে পারে যেমন L1U1A1। তারপর যারা SKUs একটি ভিন্ন টেবিলে সংরক্ষণ করা হয়।

আমি product_id বনাম activity_id এর একটি তালিকা পেতে নিম্নলিখিতটি সনাক্ত করেছি: -

SELECT a.activity_id, w.product_id 
  FROM activities a 
  JOIN units USING(unit_id) 
  JOIN product_types USING(product_type_id) 
  JOIN web_products w 
    ON sku=CONCAT('L',SUBSTR(product_type_code,3), 'U',unit_index, 'A',activity_index)

আমি দেখেছি যে এটি MySQL এ একটি SELECT তে অন্তর্ভুক্ত করা খুব জটিল ছিল, তাই আমি একটি অস্থায়ী টেবিল তৈরি করেছি এবং আপডেট বিবৃতির সাথে যোগদান করেছি: -

CREATE TEMPORARY TABLE activity_product_ids AS (<the above select statement>);

UPDATE activities a
  JOIN activity_product_ids b
    ON a.activity_id=b.activity_id 
  SET a.product_id=b.product_id;

আমি কেউ এই দরকারী খুঁজে আশা করি


একই টেবিলের জন্য,

UPDATE PHA_BILL_SEGMENT AS PHA,
     (SELECT BILL_ID, COUNT(REGISTRATION_NUMBER) AS REG 
       FROM PHA_BILL_SEGMENT
        GROUP BY REGISTRATION_NUMBER, BILL_DATE, BILL_AMOUNT
        HAVING REG > 1) T
    SET PHA.BILL_DATE = PHA.BILL_DATE + 2
 WHERE PHA.BILL_ID = T.BILL_ID;

তুমি ব্যবহার করতে পার:

UPDATE Station AS st1, StationOld AS st2
   SET st1.already_used = 1
 WHERE st1.code = st2.code

নীচের প্রশ্নের সাথে চেক করুন।

আপডেট টেবিলএ একটি অভ্যন্তরীণ যোগদান টেবিল B বি। এনাম_এ = বি .নাম_b সেট বৈধকরণ_চিহ্ন = যদি (start_dts> end_dts, 'Valid', '')


UPDATE
    `table1` AS `dest`,
    (
        SELECT
            *
        FROM
            `table2`
        WHERE
            `id` = x
    ) AS `src`
SET
    `dest`.`col1` = `src`.`col1`
WHERE
    `dest`.`id` = x
;

এই আপনার জন্য কাজ করে আশা করি।


UPDATE 
  receipt_invoices dest,
  (
    SELECT 
      `receipt_id`,
      CAST((net * 100) / 112 AS DECIMAL (11, 2)) witoutvat 
    FROM
      receipt 
    WHERE CAST((net * 100) / 112 AS DECIMAL (11, 2)) != total 
      AND vat_percentage = 12
  ) src 
SET
  dest.price = src.witoutvat,
  dest.amount = src.witoutvat 
WHERE col_tobefixed = 1 
  AND dest.`receipt_id` = src.receipt_id ;

আশা করি এটি আপনাকে এমন একটি ক্ষেত্রে সাহায্য করবে যেখানে আপনি দুটি টেবিলের মধ্যে মিল এবং আপডেট করতে হবে।







sql-update