PHP和MYSQL查询语句查出30天内反馈问题次数最多的用户的ID

我也不知道怎么能够清除表达我的意思,
如图是数据库mkadd中的一个叫feedback的表
表格式图1,表内容如图2
fanku 是反馈的内容
shijian是反馈的日期
uid就是用户的ID

select语句要怎么写才能查询出 30天内,反馈次数最多的那个用的ID;
就像图2中,uid是1的用户反馈的数量比uid是2的多;

完整的sql语句要怎么写,才能得到反馈次数最多的那个用户的id,条件是30天内
我知道date_format(shijian,'%y%m')=date_format(curdate(),'%y%m')是查询30天内记录的意思,但是具体的sql语句我不会写,
谁能帮帮我写一个完整的语句吗,千恩万谢。

// 如果你的用户表中已经有了该用户的反馈数目记录,
// 那你可以直接倒序查询再加个 Limit即可 :

$sql = "SELECT * FROM users ORDER BY item_number DESC";


// 如果没有的话, 那就遍历你的Users表, 分别查询出用户的反馈条数再进行排序吧

$sql = "SELECT id FROM users";
$users = [];  // 取出所有用户ID
$result = [];
foreach ($users as $value) {
    $sql = "SELECT count(id) AS number FROM feedback where id = $value";
    $r = mysql_query($sql);  // 取出条数 
    $number = mysql_fetch_assoc($r)['number'];
    $result[] = $number;
}

rsort($result);

echo '<pre>';
print_r($result);   // 最终结果, 取出30条即可
ehco '</pre>';

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-09-19
SELECT
uid
FROM
feedback
WHERE
DATE_SUB(CURDATE(), INTERVAL 30 DAY) <= date(shijian)
GROUP BY
uid
ORDER BY
count(*) DESC
LIMIT 0,1

追问

十分感谢,用了您的代码成功了,好人一生平安

本回答被提问者采纳