2014-10-19 3 views
0

У меня есть запрос на выборку, как это:Выберите значение определяемого пользователя переменных с рандами() в MySQL

SELECT @imageID := imageID AS imageID, likeCount, path, `name`, description 
    from VIEW_Select_Client_PopularImages 
    ORDER BY RAND() LIMIT 1; 
SELECT @imageID; 

на самом деле я хочу @imageID, чтобы использовать его в другом запросе. но моя проблема в том, что несколько раз imageID в первом запросе на выбор отличается от @imageID во втором запросе выбора!

не уверен, но @imageID во всех моих тестах является самым большим числом между всеми столбцами imageIDs.

Любая идея?

ответ

0

Да, @imageID будет установлен на последний элемент, считанный таблицей. В большинстве случаев это происходит, чтобы они были добавлены, поэтому вы, вероятно, получите идентификатор для последнего идентификатора изображения в таблице. Индексирование может изменить это.

mysql фактически устанавливает @imageID один раз для каждого элемента таблицы, затем случайным образом сортирует их и выбирает первый. Он должен создать случайное число для каждой строки.

Если вы хотите сделать это, попробуйте:

set @imageID = (SELECT imageID from VIEW_Select_Client_PopularImages order by rand() limit 1); 

Затем используйте второй запрос, чтобы получить другие значения @imageID.