我正在尝试创建一个从数据库中轮流选择广告的过程。并最终返回选定的广告行并增加视图值。
我目前正在处理的部分应该
- 从“广告”表中提取结果,其中“城市”与给定城市匹配,“地点”与给定地点名称匹配。
- 添加一个额外的“num”列来枚举结果行。
- 从这些结果中,选择 'num' 列与 SUM('views') % COUNT(id) 匹配的行
只要在最终选择并返回广告时增加视图列,这应该允许我轮流显示广告
我目前正在处理的代码是......
SET @t1=-1;
SELECT *
FROM (SELECT @t1 := @t1+1 AS num, ads.*
FROM ads
WHERE city = 'Maitland'
AND spot = 'home-banner'
ORDER BY id ASC) dt
WHERE dt.num = SUM(dt.views) % COUNT(dt.id);
...但是我遇到了 SUM 和 COUNT 函数的问题。我收到无效使用组功能错误。我也尝试将函数移动到子查询内部,但由于某种原因,这会导致子查询只返回一个结果。
子查询结果
num id spot city views
0 1 home-banner Maitland 0
1 2 home-banner Maitland 2
2 3 home-banner Maitland 0
3 4 home-banner Maitland 0
4 5 home-banner Maitland 0
5 6 home-banner Maitland 0