我有一个名为“ads
”的数据库表。我想随机在网站上显示这些广告。我的表结构是
user_id int(11)
type varchar(50)
title varchar(100)
body varchar(100)
display_url varchar(100)
target_url varchar(100)
dimension varchar(50)
image varchar(200)
preferred_countries text
preferred_languages text
preferred_sites text
excluded_sites text
preferred_keywords text
excluded_keywords text
preferred_devices varchar(100)
schedule mediumtext
clicks int(20)
clicked int(11)
cpc decimal(20,20)
正如您所看到的,有preferred_countries
,preferred_languages
,preferred_devices
等列。
我想通过应用多个支票向访问者展示这些广告,例如,如果有任何广告的首选国家/地区,那么它将向该特定国家/地区的访问者显示,依此类推。
我已经获取了与用户相关的所有数据,即。访客的国家,访客的语言等
但我不知道如何获取这样的记录。
答案 0 :(得分:1)
select * from ads
where preferred_countries = $mycountry
order by rand()
limit 1
答案 1 :(得分:0)
试试这个
select * from ads
where preferred_countries = $mycountry and preferred_languages=$language
order by rand()
limit 1
答案 2 :(得分:0)
您可以将MySQL's RAND() function与ORDER BY FIELD()
结合起来考虑SELECT * FROM `ads`
ORDER BY FIELD(preferred_countries, '$mycountry') DESC, RAND()
LIMIT 1
这不会过滤掉与$ mycountry不匹配的行,但如果它们存在,您将首先获得它们。如果有多个匹配,您还应该得到随机结果。
如果您的preferred_countries字段可能包含多个国家/地区名称,那么这也不会有效。