我需要爲網頁生成不同的廣告,而不需要重複。SQL隨機組合2個唯一列
比方說,我有6個區域,廣告去,100廣告。我需要生成6行banner.id
和zone.id
,這將是唯一的每一次。
的表:
banner_ads
(id, ad_location)
區
(id, zone_code)
banner_to_zones
(banner_id, zone_id)
如果需要
我需要爲網頁生成不同的廣告,而不需要重複。SQL隨機組合2個唯一列
比方說,我有6個區域,廣告去,100廣告。我需要生成6行banner.id
和zone.id
,這將是唯一的每一次。
的表:
banner_ads(id, ad_location)
區(id, zone_code)
banner_to_zones(banner_id, zone_id)
如果需要
這可能是PHP的組合和SQL是一種方法。每個banner_id
隨機選擇一個可能的區域(從數據中)。然後從隨機區域選擇,隨機選擇一個banner_id
。此時,您將收集不同的區域和橫幅。然後你可以得到其中六個:
select thezone as zone_id,
substring_index(group_concat(banner_id order by RAND()), ',', 1) as banner_id
from (select banner_id, substring_index(group_concat(zone_id order by RAND()), ',', 1) as thezone
from banner_to_zones b2z
group by banner_id
) b
order by rand()
limit 6
有些情況下,這將無法正常工作。但假設你有足夠的區域和橫幅,那麼它應該返回六個橫幅和區域不同的橫幅。
如果刷新屏幕,您可能會再次在相同區域中看到相同的廣告。 – karmafunk
你是什麼意思?「我需要用banner.id和zone.id生成6行,每次都是唯一的。」 ?你的意思是6行的組合必須是唯一的嗎?你的意思是這些行不應該顯示嗎?或者你的意思是6行不應該有重複的值。 –