如何修复此MySQL查询?

2 mysql

SELECT 
  avg(con_hits) as avg_hits 
FROM 
  content 
WHERE 
  con_type = 1 
  AND con_posttime < $twelve_hrs_ago 
  AND con_refresh = 0 
ORDER BY 
  con_posttime DESC 
LIMIT 100
Run Code Online (Sandbox Code Playgroud)

我希望它转到至少12小时前发布的第一条记录(由$twelve_hrs_ago具有合适时间戳的变量表示),并取下列的平均值con_hits,用于接下来的100条记录.在我的例子中,它忽略了LIMIT,并取表中每条记录的平均值.

有没有办法绕过那个?

tro*_*skn 12

LIMITAVG计算之后应用于结果集.您可以使用子选择执行您想要的操作:

SELECT avg(con_hits) as avg_hits
FROM (
  SELECT con_hits
  FROM content
  WHERE
    con_type = 1
    AND con_posttime < $twelve_hrs_ago
    AND con_refresh = 0
  ORDER BY con_posttime DESC
  LIMIT 100
) x;
Run Code Online (Sandbox Code Playgroud)

您也可以使用数据库计算时间偏移量.$twelve_hrs_ago以上替换为:

date_add(now(), interval -12 hour)
Run Code Online (Sandbox Code Playgroud)