MySQL « Выборка данных из БД в случайном порядке
База данных MySQL.
Есть блог или форум с темами и тэгами. Хочется рядом с топиком показывать список похожих тем (по совпадению тэгов) но отсортированный случайным образом. Скажем есть десять схожих тем, у которых совпадает два тэга. Я показываю только пять похожих тем и хочу чтобы это были разные темы при каждой перезагрузке страницы.
Пример.
Первый вызов.
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .ini.geshi_code {font-family:monospace;} .ini.geshi_code .imp {font-weight: bold; color: red;} .ini.geshi_code .co0 {color: #666666; font-style: italic;} .ini.geshi_code .sy0 {color: #000066; font-weight:bold;} .ini.geshi_code .st0 {color: #933;} .ini.geshi_code .re0 {color: #000066; font-weight:bold;} .ini.geshi_code .re1 {color: #000099;} .ini.geshi_code .re2 {color: #660066;} .ini.geshi_code span.xtra { display:block; }
Совпадает_тэгов Имя_темы
----------------------------------
3 Тема1
3 Тема13
2 Тема2
2 Тема3
2 Тема7
Второй вызов.
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .ini.geshi_code {font-family:monospace;} .ini.geshi_code .imp {font-weight: bold; color: red;} .ini.geshi_code .co0 {color: #666666; font-style: italic;} .ini.geshi_code .sy0 {color: #000066; font-weight:bold;} .ini.geshi_code .st0 {color: #933;} .ini.geshi_code .re0 {color: #000066; font-weight:bold;} .ini.geshi_code .re1 {color: #000099;} .ini.geshi_code .re2 {color: #660066;} .ini.geshi_code span.xtra { display:block; }
Совпадает_тэгов Имя_темы
----------------------------------
3 Тема13
3 Тема1
2 Тема8
2 Тема5
2 Тема2
Есть блог или форум с темами и тэгами. Хочется рядом с топиком показывать список похожих тем (по совпадению тэгов) но отсортированный случайным образом. Скажем есть десять схожих тем, у которых совпадает два тэга. Я показываю только пять похожих тем и хочу чтобы это были разные темы при каждой перезагрузке страницы.
Пример.
Первый вызов.
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .ini.geshi_code {font-family:monospace;} .ini.geshi_code .imp {font-weight: bold; color: red;} .ini.geshi_code .co0 {color: #666666; font-style: italic;} .ini.geshi_code .sy0 {color: #000066; font-weight:bold;} .ini.geshi_code .st0 {color: #933;} .ini.geshi_code .re0 {color: #000066; font-weight:bold;} .ini.geshi_code .re1 {color: #000099;} .ini.geshi_code .re2 {color: #660066;} .ini.geshi_code span.xtra { display:block; }
Совпадает_тэгов Имя_темы
----------------------------------
3 Тема1
3 Тема13
2 Тема2
2 Тема3
2 Тема7
Второй вызов.
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .ini.geshi_code {font-family:monospace;} .ini.geshi_code .imp {font-weight: bold; color: red;} .ini.geshi_code .co0 {color: #666666; font-style: italic;} .ini.geshi_code .sy0 {color: #000066; font-weight:bold;} .ini.geshi_code .st0 {color: #933;} .ini.geshi_code .re0 {color: #000066; font-weight:bold;} .ini.geshi_code .re1 {color: #000099;} .ini.geshi_code .re2 {color: #660066;} .ini.geshi_code span.xtra { display:block; }
Совпадает_тэгов Имя_темы
----------------------------------
3 Тема13
3 Тема1
2 Тема8
2 Тема5
2 Тема2
1 ответов
А так не работает?
SELECT * FROM tbl_name ORDER BY RAND();
/*ORDER BY RAND() combined with LIMIT is useful for selecting a random sample from a set of rows:*/
MySQL doc
Приведенный выше пример будет всегда работать не так шустро! Но есть решение!)))
Почему и каково решение уже достаточно давно писали здесь - http://habrahabr.ru/blogs/mysql/54176/