<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Delete an entry if one of the column values appeared in other table in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Delete-an-entry-if-one-of-the-column-values-appeared-in-other/m-p/837985#M331349</link>
    <description>&lt;P&gt;Hi,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have a table A:&lt;/P&gt;
&lt;TABLE width="470"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="55"&gt;User_ID&lt;/TD&gt;
&lt;TD width="86"&gt;Customer_ID&lt;/TD&gt;
&lt;TD width="151"&gt;Email_add&lt;/TD&gt;
&lt;TD width="73"&gt;Invoice_no&lt;/TD&gt;
&lt;TD width="105"&gt;Invoice_account&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;u1&lt;/TD&gt;
&lt;TD&gt;c1&lt;/TD&gt;
&lt;TD&gt;&lt;A href="mailto:example1@gmail.com" target="_blank"&gt;example1@gmail.com&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;v1&lt;/TD&gt;
&lt;TD&gt;100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;u2&lt;/TD&gt;
&lt;TD&gt;c2&lt;/TD&gt;
&lt;TD&gt;&lt;A href="mailto:example2@gmail.com" target="_blank"&gt;example2@gmail.com&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;v2&lt;/TD&gt;
&lt;TD&gt;120&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;u2&lt;/TD&gt;
&lt;TD&gt;c2&lt;/TD&gt;
&lt;TD&gt;&lt;A href="mailto:example2b@gmail.com" target="_blank"&gt;example2b@gmail.com&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;v3&lt;/TD&gt;
&lt;TD&gt;130&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;u3&lt;/TD&gt;
&lt;TD&gt;c3&lt;/TD&gt;
&lt;TD&gt;&lt;A href="mailto:example3@gmail.com" target="_blank"&gt;example3@gmail.com&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;v4&lt;/TD&gt;
&lt;TD&gt;150&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;u4&lt;/TD&gt;
&lt;TD&gt;c4&lt;/TD&gt;
&lt;TD&gt;&lt;A href="mailto:example4@gmail.com" target="_blank"&gt;example4@gmail.com&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;v5&lt;/TD&gt;
&lt;TD&gt;165&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;u5&lt;/TD&gt;
&lt;TD&gt;c5&lt;/TD&gt;
&lt;TD&gt;&lt;A href="mailto:example5@gmail.com" target="_blank"&gt;example5@gmail.com&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;v6&lt;/TD&gt;
&lt;TD&gt;180&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And table B:&lt;/P&gt;
&lt;TABLE width="301"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;User_ID&lt;/TD&gt;
&lt;TD width="86"&gt;Customer_ID&lt;/TD&gt;
&lt;TD width="151"&gt;Email_add&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;c1&lt;/TD&gt;
&lt;TD&gt;&lt;A href="mailto:example1@gmail.com" target="_blank"&gt;example1@gmail.com&lt;/A&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="mailto:example2@gmail.com" target="_blank"&gt;example2@gmail.com&lt;/A&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;u3&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I wish to delete the whole entry when either User_ID, Customer_ID or Email_add appeared in table B.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So the result table C should look like this:&lt;/P&gt;
&lt;TABLE style="border-collapse: collapse; width: 240pt;" border="0" width="320" cellspacing="0" cellpadding="0"&gt;
&lt;TBODY&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD width="64" height="19" style="height: 14.5pt; width: 48pt;"&gt;User_ID&lt;/TD&gt;
&lt;TD width="64" style="width: 48pt;"&gt;Customer_ID&lt;/TD&gt;
&lt;TD width="64" style="width: 48pt;"&gt;Email_add&lt;/TD&gt;
&lt;TD width="64" style="width: 48pt;"&gt;Invoice_no&lt;/TD&gt;
&lt;TD width="64" style="width: 48pt;"&gt;Invoice_account&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" style="height: 14.5pt;"&gt;u4&lt;/TD&gt;
&lt;TD&gt;c4&lt;/TD&gt;
&lt;TD class="xl65"&gt;&lt;A href="mailto:example4@gmail.com" target="_blank"&gt;example4@gmail.com&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;v5&lt;/TD&gt;
&lt;TD align="right"&gt;165&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" style="height: 14.5pt;"&gt;u5&lt;/TD&gt;
&lt;TD&gt;c5&lt;/TD&gt;
&lt;TD class="xl65"&gt;&lt;A href="mailto:example5@gmail.com" target="_blank"&gt;example5@gmail.com&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;v6&lt;/TD&gt;
&lt;TD align="right"&gt;180&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I've tried using where clause A.User_ID=B.User_ID or A.Customer_ID=B.Customer_ID or A.Email_add=B.Email_add to delete the rows (failed T.T.). This operation is very slow when the datasets for table A and Table B is large.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please advise, thanks!&lt;/P&gt;</description>
    <pubDate>Wed, 12 Oct 2022 06:58:01 GMT</pubDate>
    <dc:creator>sarahzhou</dc:creator>
    <dc:date>2022-10-12T06:58:01Z</dc:date>
    <item>
      <title>Delete an entry if one of the column values appeared in other table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Delete-an-entry-if-one-of-the-column-values-appeared-in-other/m-p/837985#M331349</link>
      <description>&lt;P&gt;Hi,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have a table A:&lt;/P&gt;
&lt;TABLE width="470"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="55"&gt;User_ID&lt;/TD&gt;
&lt;TD width="86"&gt;Customer_ID&lt;/TD&gt;
&lt;TD width="151"&gt;Email_add&lt;/TD&gt;
&lt;TD width="73"&gt;Invoice_no&lt;/TD&gt;
&lt;TD width="105"&gt;Invoice_account&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;u1&lt;/TD&gt;
&lt;TD&gt;c1&lt;/TD&gt;
&lt;TD&gt;&lt;A href="mailto:example1@gmail.com" target="_blank"&gt;example1@gmail.com&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;v1&lt;/TD&gt;
&lt;TD&gt;100&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;u2&lt;/TD&gt;
&lt;TD&gt;c2&lt;/TD&gt;
&lt;TD&gt;&lt;A href="mailto:example2@gmail.com" target="_blank"&gt;example2@gmail.com&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;v2&lt;/TD&gt;
&lt;TD&gt;120&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;u2&lt;/TD&gt;
&lt;TD&gt;c2&lt;/TD&gt;
&lt;TD&gt;&lt;A href="mailto:example2b@gmail.com" target="_blank"&gt;example2b@gmail.com&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;v3&lt;/TD&gt;
&lt;TD&gt;130&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;u3&lt;/TD&gt;
&lt;TD&gt;c3&lt;/TD&gt;
&lt;TD&gt;&lt;A href="mailto:example3@gmail.com" target="_blank"&gt;example3@gmail.com&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;v4&lt;/TD&gt;
&lt;TD&gt;150&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;u4&lt;/TD&gt;
&lt;TD&gt;c4&lt;/TD&gt;
&lt;TD&gt;&lt;A href="mailto:example4@gmail.com" target="_blank"&gt;example4@gmail.com&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;v5&lt;/TD&gt;
&lt;TD&gt;165&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;u5&lt;/TD&gt;
&lt;TD&gt;c5&lt;/TD&gt;
&lt;TD&gt;&lt;A href="mailto:example5@gmail.com" target="_blank"&gt;example5@gmail.com&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;v6&lt;/TD&gt;
&lt;TD&gt;180&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And table B:&lt;/P&gt;
&lt;TABLE width="301"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;User_ID&lt;/TD&gt;
&lt;TD width="86"&gt;Customer_ID&lt;/TD&gt;
&lt;TD width="151"&gt;Email_add&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;c1&lt;/TD&gt;
&lt;TD&gt;&lt;A href="mailto:example1@gmail.com" target="_blank"&gt;example1@gmail.com&lt;/A&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&lt;A href="mailto:example2@gmail.com" target="_blank"&gt;example2@gmail.com&lt;/A&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;u3&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I wish to delete the whole entry when either User_ID, Customer_ID or Email_add appeared in table B.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So the result table C should look like this:&lt;/P&gt;
&lt;TABLE style="border-collapse: collapse; width: 240pt;" border="0" width="320" cellspacing="0" cellpadding="0"&gt;
&lt;TBODY&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD width="64" height="19" style="height: 14.5pt; width: 48pt;"&gt;User_ID&lt;/TD&gt;
&lt;TD width="64" style="width: 48pt;"&gt;Customer_ID&lt;/TD&gt;
&lt;TD width="64" style="width: 48pt;"&gt;Email_add&lt;/TD&gt;
&lt;TD width="64" style="width: 48pt;"&gt;Invoice_no&lt;/TD&gt;
&lt;TD width="64" style="width: 48pt;"&gt;Invoice_account&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" style="height: 14.5pt;"&gt;u4&lt;/TD&gt;
&lt;TD&gt;c4&lt;/TD&gt;
&lt;TD class="xl65"&gt;&lt;A href="mailto:example4@gmail.com" target="_blank"&gt;example4@gmail.com&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;v5&lt;/TD&gt;
&lt;TD align="right"&gt;165&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 14.5pt;"&gt;
&lt;TD height="19" style="height: 14.5pt;"&gt;u5&lt;/TD&gt;
&lt;TD&gt;c5&lt;/TD&gt;
&lt;TD class="xl65"&gt;&lt;A href="mailto:example5@gmail.com" target="_blank"&gt;example5@gmail.com&lt;/A&gt;&lt;/TD&gt;
&lt;TD&gt;v6&lt;/TD&gt;
&lt;TD align="right"&gt;180&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I've tried using where clause A.User_ID=B.User_ID or A.Customer_ID=B.Customer_ID or A.Email_add=B.Email_add to delete the rows (failed T.T.). This operation is very slow when the datasets for table A and Table B is large.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Please advise, thanks!&lt;/P&gt;</description>
      <pubDate>Wed, 12 Oct 2022 06:58:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Delete-an-entry-if-one-of-the-column-values-appeared-in-other/m-p/837985#M331349</guid>
      <dc:creator>sarahzhou</dc:creator>
      <dc:date>2022-10-12T06:58:01Z</dc:date>
    </item>
    <item>
      <title>Re: Delete an entry if one of the column values appeared in other table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Delete-an-entry-if-one-of-the-column-values-appeared-in-other/m-p/837986#M331350</link>
      <description>&lt;P&gt;Try this&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data a;
input User_ID $ Customer_ID $ Email_add :$20. Invoice_no $ Invoice_account;
datalines;
u1 c1 example1@gmail.com  v1 100 
u2 c2 example2@gmail.com  v2 120 
u2 c2 example2b@gmail.com v3 130 
u3 c3 example3@gmail.com  v4 150 
u4 c4 example4@gmail.com  v5 165 
u5 c5 example5@gmail.com  v6 180 
;
 
data b;
input User_ID $ Customer_ID $ Email_add :$20.;
infile datalines missover dlm = '|';
datalines;
   | c1 | example1@gmail.com 
   |    | example2@gmail.com 
u3 |    |                    
;   


proc sql;
   create table want as
   select * from a
   where User_ID     not in (select User_ID     from b)
     and Customer_ID not in (select Customer_ID from b)
     and Email_add   not in (select Email_add   from b)
   ;
quit;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 12 Oct 2022 07:15:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Delete-an-entry-if-one-of-the-column-values-appeared-in-other/m-p/837986#M331350</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2022-10-12T07:15:50Z</dc:date>
    </item>
    <item>
      <title>Re: Delete an entry if one of the column values appeared in other table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Delete-an-entry-if-one-of-the-column-values-appeared-in-other/m-p/837987#M331351</link>
      <description>&lt;P&gt;Also, the 3rd obs should be in the desired result as well, correct?&lt;/P&gt;</description>
      <pubDate>Wed, 12 Oct 2022 07:19:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Delete-an-entry-if-one-of-the-column-values-appeared-in-other/m-p/837987#M331351</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2022-10-12T07:19:07Z</dc:date>
    </item>
    <item>
      <title>Re: Delete an entry if one of the column values appeared in other table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Delete-an-entry-if-one-of-the-column-values-appeared-in-other/m-p/837989#M331352</link>
      <description>&lt;P&gt;You could use the EXIST clause.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/* create a new table */
proc sql;
  create table want as
    select * from a
    where not exists
      ( select * from b 
        where 
          a.user_id=b.user_id or
          a.customer_id=b.customer_id or
          a.email_add=b.email_add
      )
    ;
quit;

/* delete from existing table in-place */
proc sql;
  delete from a 
    where not exists
      ( select * from b 
        where 
          a.user_id=b.user_id or
          a.customer_id=b.customer_id or
          a.email_add=b.email_add
      )
    ;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;If you're dealing with SAS tables then it's normally better to create a new table and not to directly delete rows in an existing table ....unless you have a big source table and need only to delete a minor percentage of rows. Reason: SAS deleted the rows only logically but no physically. The deleted rows still remain in the table and add to the tables volume (file size).&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc contents data=a;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Patrick_0-1665561613802.png" style="width: 400px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/76104i53602F3D688A6037/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Patrick_0-1665561613802.png" alt="Patrick_0-1665561613802.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If it's a table in a database then using DELETE is likely the "correct" approach. Having said that: Delete is also in a database a slow process so if you need to delete a high percentage of rows then creating a new table will likely execute faster.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 12 Oct 2022 08:03:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Delete-an-entry-if-one-of-the-column-values-appeared-in-other/m-p/837989#M331352</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2022-10-12T08:03:09Z</dc:date>
    </item>
    <item>
      <title>Re: Delete an entry if one of the column values appeared in other table</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Delete-an-entry-if-one-of-the-column-values-appeared-in-other/m-p/838321#M331450</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/31304"&gt;@PeterClemmensen&lt;/a&gt;&amp;nbsp;, thank you!&lt;/P&gt;</description>
      <pubDate>Thu, 13 Oct 2022 02:54:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Delete-an-entry-if-one-of-the-column-values-appeared-in-other/m-p/838321#M331450</guid>
      <dc:creator>sarahzhou</dc:creator>
      <dc:date>2022-10-13T02:54:33Z</dc:date>
    </item>
  </channel>
</rss>

