SubQuery bug again in 4.1

Daniel Kiss <[email protected]>
Newsgroups gmane.comp.db.mysql.bugs
Message-ID <[email protected]>
Hi all,

I think you misunderstood me. :-) I try to be more detailed, and I will 
also give an example.

So, I have these two tables:

----------------------------------------
CREATE TABLE main (
   ID int not null,
   Value int,

  primary key (ID)) Type = InnoDB;

CREATE TABLE sub (
   MainID int not null,
   KeyDate date not null,
   SubValue int not null,

   primary key (MainID, KeyDate),

  foreign key (MainID) references main (ID)) Type = InnoDB;
----------------------------------------

In the tables I have these lines:

----------------------------------------
INSERT INTO main VALUES
(1, null),
(2, null),
(3, null),
(4, null),
(5, null);

INSERT INTO sub VALUES
(1, '2001-01-01', 5),
(1, '1999-01-01', 10),
(2, '2001-01-01', 3),
(2, '2001-01-02', 4),
(4, '2001-01-01', 8);
----------------------------------------

Now, I want to update the `Value` fields in the `main` table for ALL 
records to contain the latest `SubValue` from the `sub` table.

So I want this to be in the `main` table:
ID	Value
--	-----
1	5
2	4
3	null
4	8
5	null
--	-----

For this I need to select the most recent `SubValue` from the sub table 
(e.g.: The `SubValue` with the latest `KeyDate` for a specified `MainID`).
I can do that this way (if you have other idea, tell me! :-)):

select SubValue from sub where MainID = xxx order by KeyDate desc limit 1

(xxx means an ID from the `main` table)

This query obviously returns with one record or null so I expect that this 
won't be a problem if I use this query as a subquery.
(By the way, I get the same weird behavior in any subquery expression where 
I use the "limit" parameter.)

Now, I want to update my `main` table to get the result above.

update main set Value = (select SubValue from sub where MainID = main.ID 
order by KeyDate desc limit 1)

This update sequence runs well, but the result in the `main` table will be 
this:
ID	Value
--	-----
1	5
2	4
3	4
4	4
5	4
--	-----

which is absolutelly not what I expected.

Thanks for your help in advance,
	Dani 



-- 
MySQL Bugs Mailing List
For list archives: http://lists.mysql.com/bugs
To unsubscribe:    http://lists.mysql.com/[email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.