On 4/28/06, Daevid Vincent <[EMAIL PROTECTED]> wrote: > > vmware reviewit # mysql --version > mysql Ver 14.12 Distrib 5.0.19, for pc-linux-gnu (i686) using readline > 5.1 > > Given two tables: > > CREATE TABLE `logs` ( > `id` bigint(20) unsigned NOT NULL auto_increment, > `user_id` int(10) unsigned default '0', > `created_on` timestamp NOT NULL default > CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, > `body` text, > PRIMARY KEY (`id`), > ) ENGINE=InnoDB; > > CREATE TABLE `users` ( > `id` int(10) unsigned NOT NULL auto_increment, > `username` varchar(30) NOT NULL, > `firstname` varchar(255) NOT NULL, > `lastname` varchar(255) NOT NULL, > `login_date` datetime default NULL, > `timestamp` timestamp NOT NULL default > CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, > PRIMARY KEY (`id`), > ) ENGINE=InnoDB; > > > I want a query that will show me the username and the single most current > log body and date for every user. > > I think I need to use a sub query, but I can't even get the very basic > example one to work... > http://dev.mysql.com/doc/refman/5.0/en/subqueries.html > > mysql> SELECT * FROM logs WHERE user_id = (SELECT id FROM users); > ERROR 1242 (21000): Subquery returns more than 1 row
try SELECT * FROM logs WHERE user_id in (SELECT id FROM users); mysql> SELECT * FROM logs WHERE users.id = (SELECT id FROM users); > ERROR 1054 (42S22): Unknown column 'users.id' in 'where clause' the table logs has only the column user_id . mysql> SELECT logs.*, users.username > -> FROM logs JOIN users ON users.id = logs.id > -> WHERE user_id = (SELECT id FROM users ORDER BY username); > ERROR 1242 (21000): Subquery returns more than 1 row again replace = by in. Hope this helps. Thanx Alex