You could probably accomplish this with a variant of the MAX-CONCAT trick <http://www.mysql.com/doc/en/example-Maximum-column-group-row.html>. Something like:
SELECT user_id, SUBSTRING(MAX(CONCAT(TRUNCATE(RAND(),4),title)),7) AS Title FROM banners GROUP BY user_id;
Michael
m.pheasant wrote:
Order by is working after the group stage. You would need an aggregate function which chooses a random row. Some other SQL implementations would not let you select a column that is not
also grouped (eg title) or in an aggregate function as in your select ...
group by ... example.
m
-----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
I have this table:
mysql> select * from banners; +----+---------+---------------+ | id | user_id | title | +----+---------+---------------+ | 1 | 1 | first banner | | 2 | 1 | second banner | | 3 | 2 | third banner | | 4 | 2 | forth banner | | 5 | 2 | fifth banner | +----+---------+---------------+
I would like to show a random banner for each user, something like this:
first call +----+---------+---------------+ | id | user_id | title | +----+---------+---------------+ | 1 | 1 | first banner | | 3 | 2 | third banner | +----+---------+---------------+
second call +----+---------+---------------+ | id | user_id | title | +----+---------+---------------+ | 2 | 1 | second banner | | 4 | 2 | forth banner | +----+---------+---------------+
etc...
I have tried with following query but the banner doesn't change while multiple calls:
SELECT * FROM banners GROUP BY user_id ORDER BY RAND();
Can anyone help me?
Thanks in advance,
Alex
-- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]