অভ্যন্তরীণ যোগদানের সাথে PostgreSQL মুছুন delete


197
DELETE B.* 
FROM   m_productprice B  
       INNER JOIN m_product C ON B.m_product_id = C.m_product_id 
WHERE  C.upc = '7094' AND B.m_pricelist_version_id = '1000020'

আমি নিম্নলিখিত ত্রুটি পোস্টগ্রিজ এসকিউএল 8.2.11 পেয়েছি

ERROR:  syntax error at or near "B"
LINE 1: DELETE B.* from m_productprice B  INNER JOIN m_product C ON ...

আমি দেওয়ার চেষ্টা করেছি

DELETE B from m_productprice B  INNER JOIN m_product C ON B....
 ERROR:  syntax error at or near "B"

আমি দেওয়ার চেষ্টা করেছি

ERROR:  syntax error at or near "INNER"
LINE 1: DELETE from m_productprice B  INNER JOIN m_product C ON B.m_...

আমার প্রশ্নে সমস্যা কি?


3
8.2? যত তাড়াতাড়ি সম্ভব আপনার আপগ্রেড করা উচিত। এই সংস্করণটি আর সমর্থিত নয়। এবং দয়া করে ম্যানুয়ালটি পড়ুন: INNER JOIN
মোছা

ভেতরের ছাড়া এই প্রশ্নের সাথে নির্বাহ জন্য কোনো বিকল্প পদ্ধতি যোগদানের
শহরবাসী

ম্যানুয়ালটি দেখুন, ঠিক এর জন্য একটি উদাহরণ রয়েছে।
a_horse_with_no_name

উত্তর:


296
DELETE 
FROM m_productprice B  
     USING m_product C 
WHERE B.m_product_id = C.m_product_id AND
      C.upc = '7094' AND                 
      B.m_pricelist_version_id='1000020';

অথবা

DELETE 
FROM m_productprice
WHERE m_pricelist_version_id='1000020' AND 
      m_product_id IN (SELECT m_product_id 
                       FROM m_product 
                       WHERE upc = '7094'); 

@ মাইএসকিউএল তার 0mesh .. আমার সন্দেহ হয় SQL এবং postgre SQL
শহরবাসী

14
বৃহত্তর টেবিলগুলির জন্য, এই উত্তরের প্রথম সমাধানটি সম্ভবত আরও দ্রুত।
মিগলডওয়েসার 16

2
সেরা উত্তর, বিশেষত প্রথমটি, কারণ এটি আপনাকে একাধিক ক্ষেত্রের সাথে মেলানোর অনুমতি দেয়।
Kostanos

57

এটি আমার পক্ষে কাজ করেছে:

DELETE from m_productprice
WHERE  m_pricelist_version_id='1000020'
       AND m_product_id IN (SELECT m_product_id
                            FROM   m_product
                            WHERE  upc = '7094'); 

31

Postgres 9.1+ এর সাথে কাজ করে এমন অন্য ফর্মটি যুক্ত হওয়ার জন্য মার্কিন যুক্তরাষ্ট্রে বিবৃতি দিয়ে একটি সাধারণ টেবিল এক্সপ্রেশনকে সম্মিলিত করছে।

WITH prod AS (select m_product_id, upc from m_product where upc='7094')
DELETE FROM m_productprice B
USING prod C
WHERE B.m_product_id = C.m_product_id 
AND B.m_pricelist_version_id = '1000020';

26

যদি আপনার একাধিক যোগ থাকে তবে আপনি কমা দ্বারা পৃথককৃত ইউএসিং স্টেটমেন্ট ব্যবহার করতে পারেন:

DELETE 
FROM 
      AAA AS a 
USING 
      BBB AS b,
      CCC AS c
WHERE 
      a.id = b.id 
  AND a.id = c.id
  AND a.uid = 12345 
  AND c.gid = 's434sd4'

উল্লেখ


22

কেবলমাত্র অন্তর্ভুক্ত যোগদান, বাম যোগ বা অন্য কোন স্মথের সাথে একটি সাবকোয়ারি ব্যবহার করুন:

DELETE FROM m_productprice
WHERE m_product_id IN
(
  SELECT B.m_product_id
  FROM   m_productprice  B
    INNER JOIN m_product C 
    ON   B.m_product_id = C.m_product_id
  WHERE  C.upc = '7094' 
  AND    B.m_pricelist_version_id = '1000020'
)

কোয়েরিটি অনুকূল করতে,

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.