我有一个列有一个由逗号分隔的id列表,我想从中选择一个随机ID,
slId | adsId __________________________ 1 | 1,3,5,6,8,10 2 | 2,3,4,6,8,9,11
我想从上表中选择一个随机adsId。
预期结果:
slId | adsId _________________ 1 | 5 2 | 11
提前致谢。
答案 0 :(得分:2)
你可以在php中完成。
//retrieve all your adsId for slId 1
$array = explode(',', $resultOfQuery);
$nb = rand(0, sizeof($array));
$value = $array[$nb];
也许在sql中有一个简单的方法,但我不知道对不起。
答案 1 :(得分:2)
请注意,最好不要在字段中存储以逗号分隔的值。但是,如果您无法更改数据库结构,则可以使用此MySQL查询:
SELECT
slID,
SUBSTRING_INDEX(
SUBSTRING_INDEX(adsId, ',', rand()*(LENGTH(adsId)-LENGTH(REPLACE(adsID, ',', '')))+1),
',',
-1) as random_ads
FROM
yourtable
请参阅小提琴here。
答案 2 :(得分:0)
试试这个:
It will be more simple if you use php code here,
$adsId_array = explode(',', $adsId);
$random_number = rand(0, sizeof($adsId_array));
$value = $array[$random_number];
>> Here $value will return random value every time.
谢谢!