>
> Hi Jerry!
>
> The very last sentence on:
> http://dev.mysql.com/doc/refman/5.0/en/delete.html
>
> is "Currently, you cannot delete from a table and select from the same
> table in a subquery."
>
[JS] Yes, I knew that. I just thought that illegal query was the best way of
expressing what I wanted to do.



> But, to bypass that, you can create a temp table and join to that:
>
[JS] Bingo! It didn't occur to me to make a temporary table. That should do
exactly what I want!

Thanks.

> CREATE TEMPORARY TABLE to_delete
> SELECT prod_price.prod_id FROM prod_price
> WHERE prod_price.prod_price_chg_flag = "X";
>
> DELETE prod_price FROM prod_price
> JOIN to_delete ON prod_price.prod_id=to_delete.prod_id
> WHERE prod_price.prod_price_chg_flag = 'X';
>
> DROP TABLE to_delete;
>
> Cheers,
>
> Jay
>
> Jerry Schwartz wrote:
> > What I want to accomplish is expressed best as
> >
> > DELETE FROM prod_price
> > WHERE prod_price.prod_price_chg_flag = "O"
> > AND prod_price.prod_id IN
> >
> >     (SELECT prod_price.prod_id FROM prod_price
> >     WHERE prod_price.prod_price_chg_flag = "X")
> > ;
> >
> > This is clear, concise, and completely illegal. I want to delete
> every "O"
> > record which has an accompanying "X" record.
> >
> > I tried using a self-join like this
> >
> > DELETE FROM p1 USING prod_price AS p1 JOIN prod_price AS p2 ON
> p1.prod_id =
> > p2.prod_id
> > WHERE p1.prod_price_chg_flag = "O"
> > AND p2.prod_price_chg_flag = "X"
> > ;
> >
> > And got a storage engine error 134 (MyISAM table). I'm not even
> certain that
> > this would have done what I wanted, but I guess I won't find out.
> >
> > Here's what the table prod_price looks like:
> >
> >        Table: prod_price
> > Create Table: CREATE TABLE `prod_price` (
> >   `prod_price_id` varchar(15) NOT NULL default '',
> >   `prod_id` varchar(15) default NULL,
> >   `prod_price_del_format` varchar(255) default NULL,
> >   `prod_price_val_date` date default NULL,
> >   `prod_price_chg_flag` char(1) default NULL,
> >   `prod_price_disp_curr` varchar(10) default NULL,
> >   `prod_price_disp_price` decimal(10,2) default NULL,
> >   `prod_price_end_curr` varchar(10) default NULL,
> >   `prod_price_end_price` decimal(10,2) default NULL,
> >   `prod_price_reg_price` varchar(5) default NULL,
> >   `prod_price_changed` tinyint(1) default NULL,
> >   `prod_price_added` datetime default NULL,
> >   `prod_price_updated` datetime default NULL,
> >   PRIMARY KEY  (`prod_price_id`),
> >   KEY `prod_id` (`prod_id`)
> > ) ENGINE=MyISAM DEFAULT CHARSET=utf8
> >
> > I'm running 5.0.45-community-nt.
> >
> > Suggestions?
> >
> > Regards,
> >
> > Jerry Schwartz
> > The Infoshop by Global Information Incorporated
> > 195 Farmington Ave.
> > Farmington, CT 06032
> >
> > 860.674.8796 / FAX: 860.674.8341
> >
> > www.the-infoshop.com
> > www.giiexpress.com
> > www.etudes-marche.com
> >
> >
> >
> >
> >
>
> --
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]
> infoshop.com





-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to