Hi everyone... I actually have two servers:
1. Server: MySQL 4.0.12 2. Server: MySQL 3.23.38 This query: SELECT o_obj, MAX(CASE WHEN o_key = '69B96431' THEN o_val END) AS _69B96431, MAX(CASE WHEN o_key = '69B96431' THEN o_typ END) AS T_69B96431, MAX(CASE WHEN o_key = 'AA0887CB' THEN o_val END) AS _AA0887CB, MAX(CASE WHEN o_key = 'AA0887CB' THEN o_typ END) AS T_AA0887CB FROM TBL_32BF90B0 WHERE ( (o_key = '69B96431' AND o_val = '01') OR (o_key = 'AA0887CB' AND o_val = '1') ) GROUP BY o_obj HAVING (_69B96431 = '01') shows on server 1 (4.0.12): +----------+-----------+------------+-----------+------------+ | o_obj | _69B96431 | T_69B96431 | _AA0887CB | T_AA0887CB | +----------+-----------+------------+-----------+------------+ | 1672BE70 | 01 | S | 1 | B | | D27518B1 | 01 | S | 1 | B | +----------+-----------+------------+-----------+------------+ 2 rows in set (0.01 sec) but on server 2 (3.23.38): +----------+-----------+------------+-----------+------------+ | o_obj | _69B96431 | T_69B96431 | _AA0887CB | T_AA0887CB | +----------+-----------+------------+-----------+------------+ | 1672BE70 | 01 | S | NULL | NULL | | D27518B1 | 01 | S | NULL | NULL | +----------+-----------+------------+-----------+------------+ Please note the differences in fourth and fifth column while having absolutely identical tables and data. The following query works on 1. Server (4.0.12), but not on 2. Server (3.23.38): SELECT o_obj, MAX(CASE WHEN o_key = '69B96431' THEN o_val END) AS _69B96431, MAX(CASE WHEN o_key = '69B96431' THEN o_typ END) AS T_69B96431, MAX(CASE WHEN o_key = 'AA0887CB' THEN o_val END) AS _AA0887CB, MAX(CASE WHEN o_key = 'AA0887CB' THEN o_typ END) AS T_AA0887CB FROM TBL_32BF90B0 WHERE ( (o_key = '69B96431' AND o_val = '01') OR (o_key = 'AA0887CB') ) GROUP BY o_obj HAVING (_69B96431 = '01'); 1. Server says: +----------+-----------+------------+-----------+------------+ | o_obj | _69B96431 | T_69B96431 | _AA0887CB | T_AA0887CB | +----------+-----------+------------+-----------+------------+ | 1672BE70 | 01 | S | 1 | B | | D27518B1 | 01 | S | 1 | B | +----------+-----------+------------+-----------+------------+ 2 rows in set (0.01 sec) 2. Server says: Empty set (0.00 sec) Explain shows the folowing in column 'Extra': 1. Server: Using where; Using temporary; Using filesort 2. Server: where used; Using temporary All other columns are identical: table TBL_32BF90B0 type ALL possible_keys o_key,o_val key NULL key_len NULL ref NULL rows 312 The following query shows the same result on both servers: SELECT o_obj, MAX(CASE WHEN o_key = '69B96431' THEN o_val END) AS _69B96431, MAX(CASE WHEN o_key = '69B96431' THEN o_typ END) AS T_69B96431 FROM TBL_32BF90B0 WHERE ( (o_key = '69B96431' AND o_val = '01') ) GROUP BY o_obj HAVING (_69B96431 = '01') Both servers say: +----------+-----------+------------+ | o_obj | _69B96431 | T_69B96431 | +----------+-----------+------------+ | 1672BE70 | 01 | S | | D27518B1 | 01 | S | +----------+-----------+------------+ 2 rows in set (0.01 sec) Now, why that? TIA, Axel.