On 28/12/2005, [EMAIL PROTECTED] wrote: > I don't think there is any way with plain-old SQL (extended or > otherwise) to do it in a single statement (unless you are doing it > iteratively - that is: in a stored procedure and row-by-row).
USE test; DROP TABLE IF EXISTS foo; CREATE TABLE foo ( i TINYINT UNSIGNED NOT NULL, c CHAR(1) NOT NULL, PRIMARY KEY (i, c) ); INSERT INTO foo VALUES (1, 'a'), (1, 'b'), (1, 'c'), (1, 'd'), (2, 'x'), (2, 'y'), (2, 'z'); SELECT DISTINCT f1.i, (SELECT GROUP_CONCAT(f2.c) FROM foo f2 WHERE f2.i = f1.i AND 2 > (SELECT COUNT(*) FROM foo f3 WHERE f3.i = f2.i AND f3.c < f2.c ) ) cc FROM foo f1; Probably not useful in production code for performance reasons, and one should be careful with duplicate rows (not allowed in this example). -- felix -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]