You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-user@james.apache.org by Geert Van Damme <Ge...@darling.be> on 2004/06/01 12:44:50 UTC

Re[2]: MySQL Question

I'm using a query like this:

insert into spool (message_name, repository_name, message_state, error_message, sender, recipients, remote_host, remote_addr, message_body, last_updated, message_attributes) select  message_name, 'spool', 'root', null , sender, recipients, remote_host, remote_addr, message_body, last_updated, message_attributes from deadletter where repository_name = 'error' and last_updated between '2004-06-01 12:00:00' and  '2004-06-01 13:00:00';


Geert Van Damme

Tuesday, June 1, 2004, 10:04:22 AM, you wrote:

LS> Joins may not be allowed in a delete statement. They are usually used
LS> for selects.

LS> try a subselect in the where clause:

LS> delete from tableName
LS> where tableName.fieldName in (select
LS> anotherTableName.fieldName from 
LS> anotherTableName where ...)

LS> -Lane

LS> Chris Simmons wrote:

>>While the MySQL question may be better posed in a MySQL-oriented group,
>>maybe I could get advice if what I'm doing in the first place is the
>>correct way.  I'd like to "dump" the deadletter table back into the spool
>>and, since my mail repository is MySQL, I figured I'd just run a quick SQL
>>script.  Here it is:
>>
>>SCRIPT BEGINS AFTER THIS LINE
>>
>>USE james;
>>
>>CREATE TEMPORARY TABLE TempTable (message_name varchar(200),
>>repository_name varchar(255));
>>
>>INSERT INTO TempTable ( message_name, repository_name )
>>SELECT message_name, repository_name
>>FROM deadletter;
>>
>>INSERT INTO spool
>>	( message_name,
>>	repository_name,
>>	message_state,
>>	error_message,
>>	sender,
>>	recipients,
>>	remote_host,
>>	remote_addr,
>>	message_body,
>>	last_updated,
>>	message_attributes )
>>
>>
>>SELECT
>>	deadletter.message_name,
>>	'spool' AS repository_name,
>>	'root' AS message_state,
>>	NULL AS error_message,
>>	deadletter.sender,
>>	deadletter.recipients,
>>	deadletter.remote_host,
>>	deadletter.remote_addr,
>>	deadletter.message_body,
>>	deadletter.last_updated,
>>	deadletter.message_attributes
>>FROM
>>	deadletter, TempTable
>>WHERE
>>	deadletter.message_name = TempTable.message_name
>>	AND
>>	deadletter.repository_name = TempTable.repository_name;
>>
>>DELETE FROM
>>	deadletter
>>USING
>>	deadletter, TempTable
>>WHERE
>>	deadletter.message_name = TempTable.message_name
>>	AND
>>	deadletter.repository_name = TempTable.repository_name;
>>
>>DROP TABLE TempTable;
>>
>>SCRIPT ENDS BEFORE THIS LINE
>>
>>My problem happens on the last DELETE statement.  The error is:
>>ERROR 1064 at line 42 in file: 'respool_deadletter.sql': You have an error
>>in your SQL syntax near 'USING
>>        deadletter, TempTable
>>WHERE
>>        deadletter.message_name = TempTable.message_' at line 3
>>
>>I can't, for the life of me, figure out what's going wrong.  Also, am I
>>using the wrong mechanism in the first place to do what I want to do?
>>
>>--
>>Thanks,
>>Chris Simmons
>>web@NetChris.com
>>
>>
>>  
>>




-- 
Best regards,
 Geert                            mailto:Geert.vandamme@darling.be


---------------------------------------------------------------------
To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
For additional commands, e-mail: server-user-help@james.apache.org